tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Antonio Fiol BonnĂ­n <fiol.bon...@terra.es>
Subject Re: Forking high loaded servlet
Date Fri, 04 Jul 2003 13:42:04 GMT
I completely agree with Sergio, but do not forget about code 
optimization, query optimization, database index optimization, ...

It is difficult to say where your bottleneck is but, in most cases I 
have seen, correcting an SQL query which is not doing the exact right 
thing or adding a few indexes on the right columns on your database may 
easily achive a 1:7 performance factor.

For example, a typical mistake I have seen concerning this:

// Issue a select query that will output about 1000 result rows
int rownum = 0;
while(result.next() && (rownum++ < 5)) {
    // read a row and do something
}

You could easily add a "and rownum <= 5" to your SQL and you would save:
- database processing time
- network transmit time between DB and appserver
- Java resultset building time

That is only a fairly trivial example, of course, but I have seen it 
quite a few times. And I have even seen worse...

As this is fairly off-topic, if you need more help, do not hesitate to 
contact me off-list.

Yours,


Antonio Fiol


Sergio Juan wrote:

>----- Original Message ----- 
>From: "Diego Castillo" <diego.castillo@inexbee.com>
>To: <tomcat-user@jakarta.apache.org>
>Sent: Friday, July 04, 2003 3:05 PM
>Subject: Forking high loaded servlet
>
>
>  
>
>>Hi all,
>>
>>I have a servlet that receives a heavy load. I would like to process
>>multiple requests in parallel in order to increase throughput.
>>
>>Tomcat creates one single instance of the servlet. This is right
>>according to servlet specification paragraph 3.2, but it does not suit
>>my needs.
>>
>>I have tried extending SingleThreadModel and Tomcat does create multiple
>>instances, but I get the exact same throughput.
>>    
>>
>
>Tomcat automatically creates one thread per request. If your servlet does
>not have synchronization issues, it will be the same creating an object per
>thread that using the same object (in fact a little heavier in the first
>case, because of the overhead of creating objects).
>  
>
>>I have also tried launching a new thread for handling HttpServletRequest
>>& HttpServletResponse, but as soon as the servlet exits service(), the
>>response output stream gets closed by Tomcat.
>>
>>    
>>
>Same here.. you are launching a Thread inside of an already independent
>Thread.
>
>  
>
>>Is there any spec compliant strategy to increase the number of requests
>>per second that a servlet can handle?
>>
>>    
>>
>In configuration you can set the processors number, but I think it is not
>the issue. If the problem is that you got a bottleneck in your host (CPU or
>disk at nearly 100%) you should consider load balancing between multiple
>servers in different machines or using common programming performance tricks
>(but I think you have already done that).
>
>Regards.
>
>  
>
>>Thanks in advance,
>>
>>
>>Diego
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>
>>    
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>
>  
>


Mime
View raw message