[jboss-as7-dev] web subsystem - http connector configuration

Remy Maucherat rmaucher at redhat.com
Mon May 23 05:24:30 EDT 2011


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/stress/server/datagrid/deploy/jbossweb.sar/server.xml
> 
> 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/stress/standalone/configuration/standalone.xml
> (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 at redhat.com>
Red Hat Inc



More information about the jboss-as7-dev mailing list