if I have time this weekend, I'll try to run the same benchmarks on
the latest code.

is it included in the nightly build? if not, can someone post a build
for me to benchmark on my system?

peter


On 4/14/05, Remy Maucherat <[EMAIL PROTECTED]> wrote:
> Hi,
> 
> This has been hinted for a while ;) The purpose of this email is to
> propose using APR (Apache Portable Runtime) as the network IO used by
> Tomcat, instead of the JVM's IO.
> 
> This will provide the following benefits (some small, others more
> significant):
> - zero GC IO API (APR is not object based)
> - flexible handling of socket reads/writes using pollers and non blocking IO
> - sendfile support
> 
> Which will allow:
> - better scalability when using HTTP/1.1 keepalive, by eliminating the
> need for tying a thread blocked on an IO read (one or more (one on Unix,
> plenty on Windows) pollers will be used instead); this will allow
> certain single machine servers which couldn't use keealive in order to
> limit the amount of threads (to be able to have more simultaneous users)
> to benefit from the (large) performance benefits of keepalive
> - better performance and easier configuration when using AJP: one
> of the issues of AJP at the moment is that the number of AJP processors
> in Tomcat must be equal to the number of processors on the front end
> native servers, or keepalive has to be disabled (resulting in
> performance degradation); the benefit for AJP seems to actually be
> greater than for HTTP (special thanks to Mladen who explained to me the
> situation in detail)
> - efficient static file serving (not done yet)
> - (likely) better performance and reliability on free JVMs
> - probably slightly better performance (over NIO, Mladen measured 10%,
> while I measured 0%; as classic IO is a bit slower generally, I expect a
> small improvement); unfortunately, maximum throughput suffers (maximum
> throughput is measured by ab with keeplive enabled on localhost), as we
> cannot just block on the read until the next request comes; the
> benchmarks I use usually suck anyway ;)
> - SSL support through OpenSSL (not done right now)
> - access to certain useful native functions (detailed system status
> information, random data generation, etc)
> 
> This would effectively make Tomcat more appealing to the lower end
> servers and, hopefully, web hosting companies (due to lower resource
> usage). Large sites would likely also benefit a little from the AJP
> improvements.
> 
> The implementation would be an alternate endpoint implementation,
> replacing PoolTcpEndpoint. Alternate HTTP/1.1 processor and socket
> channel (for AJP) will be provided. Development required is actually
> fairly small (significant testing will be required, however). I didn't
> do the updated socket channel yet, but after 3 days of hacking, HTTP
> works (and the AJP stuff should be much faster to do).
> 
> Now the tricky points:
> - is it appropriate for 5.5 ? I'd say yes, as it will be a separate
> independent implementation
> - will require APR, and a small JNI friendly wrapper library
> tentatively named libtcnative by Mladen (Windows binaries - and likely
> others - will be provided); portability should be good
> - we'll need to improve performance (and especially fix the kludge that
> is currently used to decide if a socket should be put inside a poller)
> 
> Comments ?
> 
> Rémy
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to