On Mon, 2011-05-23 at 11:10 +0200, Michal Linhard wrote:
OK, let's investigate
EDG 5.1 http connector settings:
https://svn.devel.redhat.com/repos/jboss-qa/load-testing/etc/edg-51/stres...
EDG 6.0 (dummy version) http connector settings:
(dummy version is 7.0.0.Beta3 + Infinispan 5.0.0.CR2 REST server
deployed in to it as war)
https://svn.devel.redhat.com/repos/jboss-qa/load-testing/etc/edg-60/stres...
(the max-connections attribute is set to 10000 and network interface is
set to correct one before the test)
Infinispan settings are almost the same for both cases, I of course
cannot eliminate the possibility that the performance differences are
caused by infinispan, but in this case I really suspect the web connector.
Yes, I'm usually getting the blame as soon as anything using the web
shows any sort of performance regression :)
In the load test I'm doing I start 1 AS with Infinispan, load the
cache
with some data set, do some warm-up with 1/10th of final load and then
for one minute I apply a load of 1000 http clients and measure
statistics during this period.
Each client does a request, waits 100ms and repeats, so theoretical
maximum request throughput is 10000 ops/sec
EDG 5.1 with the above settings does 9,612.8 ops/sec and average
response time is 1 ms.
EDG 6.0 with the above settings does 1,748.6 ops/sec and average
response time is 39 ms.
some clients even give me read timeout exceptions in the second case.
before digging deeper I wanted to sync the settings with EDG5.1, which
you discourage me from, so let's see
what are the default values you wanna keep untouched ?
maxThreads seems to be set to 512*number of CPUs, which on the
perf17.mw.lab.eng.bos.redhat.com where I'm testing this should be 4096,
which should be enough
Indeed, it's enough. More will not give better performance.
As I said in my previous email on the list, beta 3 is slow for its init,
as was discovered by Andrig last month (and beta 4 is not out yet). It
needs too much random if you're using the java.io connector and lots of
threads. It could be the issue.
Set the system property
"org.apache.catalina.connector.Request.LOCAL_RANDOM" to "false" to
test
it. Or use the native connector (with lower thread usage, it will
require less random data).
maxKeepAliveRequests seems to be set to 100, which might be enough,
I'm
not sure how this affects the performance, IMO shouldn't be a big
factor, from what I know it's just establishing new connection every 100
requests, that's something we can survive.
Yes, it's a good default value.
maxHttpHeaderSize is something that probably doesn't have effect
on my
test, because I'm controlling the size of the headers
8KB is the default anyway.
disableUploadTimeout, connectionTimeout -this also shouldn't
affect me,
because if it does I should be seeing server side timeout exceptions and
I don't
only thing I'm worried about is acceptCount. do you know what is the
default value there ?
If you hit the accept count, the performance will be bad already. The
default is 100.
and anyway it seems that you should be able to specify executor for
your
connector, I tried this and didn't work for me. Is this already
implemented ?
Yes it is. But OTOH things change fast in AS 7, and beta 3 is old, so
maybe it wasn't there yet. It does not work ?
--
Remy Maucherat <rmaucher(a)redhat.com>
Red Hat Inc