On 05/22/2011 09:22 PM, Remy Maucherat wrote:
On Fri, 2011-05-20 at 11:20 +0200, Michal Linhard wrote:
> Hello all,
>
> AS 7.0.0.Beta4 snapshot seems to be using JBOSSWEB_7_0_0_CR1
> currently I cannot see a way to configure all HTTP Connector properties
> I'm used to from
>
http://docs.jboss.org/jbossweb/3.0.x/config/http.html
> because the configuration schema/model and the web subsystem don't allow
> it.
> (deducing from what I've seen in:
>
https://github.com/jbossas/jboss-as/blob/master/web/src/main/java/org/jbo...
>
https://github.com/jbossas/jboss-as/blob/master/web/src/main/java/org/jbo...)
>
> I need stuff like
> connectionTimeout
> maxThreads
> maxHttpHeaderSize
> maxKeepAliveRequests
> acceptCount
> disableUploadTimeout
>
> Is this going to be implemented ? Is there a JIRA about it ?
>
> currently without being able to tweak these parameters, I'm unable to
> setup EDG6 REST server module performance tests properly - without the
> tweaking the performance is quite poor.
I'm not going to add most of these setting which are almost always
misused, and I will certainly not tell you I did it if I do it :) I want
your performance to be good with the defaults, so we now have to
investigate why it is not.
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.
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
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.
maxHttpHeaderSize is something that probably doesn't have effect on my
test, because I'm controlling the size of the headers
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 ?
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 ?
m.
--
Michal Linhard
Quality Assurance Engineer
Red Hat Czech s.r.o.
Purkynova 99 612 45 Brno, Czech Republic
phone: +420 532 294 320 ext. 62320
mobile: +420 728 626 363