kazukin6 schrieb am 14.12.2008 um 19:50:52 (-0800):
> 
> Hi, Michael !
> I suppose "Connection Times (ms)" table section actually describes
> individual requests? And "Percentage of the requests served within a
> certain time (ms)" as well?
> 
> For me it seems that concurrency is hardly working at all,  but
> threads are blocked (or waiting) somewhere outside of doGet Servlet's
> method, cause doGet performance doesn't not differ to that extend
> (although there is some waiting issues inside obviously)

Hi Sergey (guessing),

I'm not a Tomcat expert, but I'm not sure the 100 threads you've
configured in maxThreads will all be around when you launch your Blitz
on the server opening 100 parallel connections. You may need to allow
Tomcat to warm up, which means that in order to obtain more reliable
test results, you should send it, say, 5000 request, like this:

    ab -n 5000 -c 50
    ab -n 5000 -c 60
    ab -n 5000 -c 70
    etc

In the Tomcat documentation, I read that if you configure a so-called
"Executor", you can instruct it to always have a minimum number of
threads hanging around, even when idle. The attribute is called
minSpareThreads. See:

http://tomcat.apache.org/tomcat-6.0-doc/config/executor.html
* minSpareThreads

http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
* useExecutor

On the other hand, there may be something in your servlet that forces
serialization, some resource scarcity, like not enough database
connections.

> I made 3 new measurements for different concurrency levels (100, 10, 1)


> ab.exe - n 100 -c 100 {address}
> ab.exe execution time=7.641 seconds
> overall doGet servlet execution =8067
> =======================================

> Time taken for tests:   8.234 seconds

> Requests per second:    12.14 [#/sec] (mean)
> Time per request:       8234.375 [ms] (mean)
> Time per request:       82.344 [ms] (mean, across all concurrent requests)


> ab.exe - n 100 -c 10 {address}
> ab.exe execution time=8.094 seconds
> overall doGet servlet execution =7206
> =======================================

> Time taken for tests:   8.094 seconds

> Requests per second:    12.36 [#/sec] (mean)
> Time per request:       809.375 [ms] (mean)
> Time per request:       80.938 [ms] (mean, across all concurrent requests)


> ab.exe - n 100 -c 1 {address}
> ab.exe execution time=10.578 seconds
> overall doGet servlet execution=4672
> =======================================

> Time taken for tests:   10.578 seconds

> Requests per second:    9.45 [#/sec] (mean)
> Time per request:       105.781 [ms] (mean)
> Time per request:       105.781 [ms] (mean, across all concurrent requests)

It's true that your servlet does not appear to execute concurrently. But
as stated, that *might* have to do with the very small test volume, or a
possible server-side bottleneck.

I think you should (1) increase your test volume, (2) check for possible
server-side bottlenecks (like database connections), and (3) maybe try
the Executor with minSpareThreads.

Michael Ludwig

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to