On 18/10/2012 12:22, Daniel Barcellos wrote:
> Hey
> 
> I'm facing similar problems too and I guess with a good configuration of my 
> server.xml would be a good start point.
> 
> So could kindly share a good Connector configuration in this mail thread? 
> What would that be the best choice in terms of max min threads keep alived 
> timeout configurations ?

It's probably not your connector config that's the problem, if there is
one.  Most of the time it's your app.

Use a profiler, monitor JMX (use VisualVM with the MBeans plugin) and
understand what's happening rather than assuming someone else's
connector config is "good" or "better".

Start a new thread when you've tried this & have questions.


p


> Thanks in advance!
> 
> Sent from my iPhone
> 
> On 18/10/2012, at 07:05, Romain Van der Keilen 
> <romain.vanderkei...@uniway.be> wrote:
> 
>> Hi there!
>>
>> Some news for you about my problem.
>> I did all the modifications you suggested, it increased the response time a 
>> little bit (2-3 seconds better on a 15 seconds scale). It was already good 
>> to take, and helped me to create a healthy configuration.
>> After that, I looked deeper into the database configuration, as I saw in the 
>> tests that non db relative actions were responding very fast (50ms for a 
>> 1000 users basis).
>> I finally found an OracleDataSource in the Oracle Driver, which reacts far 
>> way better than the BasicDataSource I was using before (12s for 150 users 
>> for the basic data source, 1.5s for the oracle one, same test).
>>
>> So I think my problems are solved, thanks to you guys!
>>
>> Many thanks for the advices,
>>
>> Romain.
>>
>> -----Original Message-----
>> From: André Warnier [mailto:a...@ice-sa.com] 
>> Sent: mercredi 17 octobre 2012 11:49
>> To: Tomcat Users List
>> Subject: Re: asking advice for tomcat 7 config
>>
>> Pid wrote:
>> ...
>>
>>>>
>>>>    <Executor  name="tomcatThreadPool" namePrefix="catalina-exec-80-" 
>>>> maxThreads="650" minSpareThreads="100" />
>>>>    <Connector executor="tomcatThreadPool" address="10.10.10.10" port="80" 
>>>> maxHttpHeaderSize="8192" 
>>>> protocol="org.apache.coyote.http11.Http11NioProtocol"
>>>>           connectionTimeout="20000" redirectPort="443" 
>>>> server="lighthttpd/2.0.0" enableLookups="false" acceptorThreadCount="4" 
>>>> socket.directBuffer="false" 
>>>>           compression="off" 
>>>> compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,image/jpeg,image/png,image/gif"
>>>>           acceptCount="50" bufferSize="4096" />
>>>>
>>>>
>>>>    <Executor  name="stomcatThreadPool" namePrefix="catalina-exec-443-" 
>>>> maxThreads="650" minSpareThreads="100" />
>>>>    <Connector executor="stomcatThreadPool" 
>>>> protocol="org.apache.coyote.http11.Http11NioProtocol" port="443" 
>>>> SSLEnabled="true" scheme="https" secure="true"
>>>>        clientAuth="false" sslProtocol="TLS" 
>>>> keystoreFile="D:\keystore\appks" server="lighthttpd/2.0.0"
>>>>        enableLookups="false" keystorePass="changeit" address="10.10.10.10" 
>>>> acceptorThreadCount="4" socket.directBuffer="false"
>>>>        compression="off" 
>>>> compressableMimeType="text/html,text/xml,text/plain,text/javascript,text/css,image/jpeg,image/png,image/gif"
>>>>        acceptCount="50" bufferSize="4096" >
>>>>    </Connector>
>>>
>>> You've configured a separate pool for connectors on ports 80 and 443.  Why?
>>>
>>> You've reduced the acceptCount to 50.  Why?
>>>
>>> You are compressing compressed images.  Why?
>>
>> There is : compression="off" in both connectors though.
>> So I guess that compressableMimeType should be ignored.
>>
>> (It /is/ still questionable to have changed the default of 
>> compressableMimeType, to include types which are inherently compressed 
>> already.)
>>
>>>
>>> You are setting acceptorThreadCount=4.  Why?
>>>
>>>
>>> Does your app have a database connection pool?
>>> What are the sizing parameters for this pool?
>>>
>>>
>> Also,
>>
>> - for the HTTP connector, connectionTimeout is set to 20000 (milliseconds), 
>> and keepAliveTimeout is not set.
>> - for the HTTPS connector, neither one is set.
>> That will cause :
>> - for the HTTP connector :
>>   - connectionTimeout = 20000 ms (20 s.)
>>   - keepAliveTimeout =  20000 ms
>> - for the HTTPS connector :
>>   - connectionTimeout = 60000 ms (60 s.)
>>   - keepAliveTimeout =  60000 ms
>>
>> 1) So it means that if a client connects to the server, but does not send 
>> any request line for a while on that connection, the server will allocate a 
>> thread to serve the request; this thread will wait up to 20 s (on HTTP) or 
>> 60 s. (on HTTPS), before timing out and returning to the pool of available 
>> threads.
>> Of course only a malicious client would do that..
>>
>> 2) it also means that a perfectly non-malicious client can connect to the 
>> server, and send a first request on the connection; the server will allocate 
>> a thread to handle this request; and then, if the same client has no more 
>> requests to send for a while, this thread will nevertheless remain waiting 
>> on this connection for 20 s. (HTTP) or 60 s. 
>> (HTTPS), just in case the client /would/ send another request on it.
>> During this time, the thread is unavailable to process other client requests.
>>
>> Discarding item (1) for now as being a DOS attack, might (2) not go a long 
>> way to explain the symtoms that the OP is mentioning ?
>>
>> I would try setting :
>> - for the HTTP connector :
>>   - connectionTimeout = 5000 ms (5 s.)
>>   - keepAliveTimeout =  5000 ms
>> - for the HTTPS connector :
>>   - connectionTimeout = 5000 ms (5 s.)
>>   - keepAliveTimeout =  5000 ms
>>
>> on the premises that :
>> - a genuine well-intentioned client is very unlikely to establish a 
>> connection with a webserver, and then not send any request on that 
>> connection for all of 5 seconds
>> - if a client, after making a first request and having obtained the response 
>> to it, is then not making any further request to the server on the same 
>> connection for more than 5 seconds, it probably means that he has for now 
>> nothing more to request.  And it is not the overhead of establishing a new 
>> TCP connection later that is nowadays going to penalise the client or the 
>> server.
>> And this would allow these Tomcat threads to be recycled much faster, 
>> instead of just sitting there doing nothing.
>>
>> Is that analysis wrong ?
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 


-- 

[key:62590808]

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to