tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Remy Maucherat" <>
Subject Re: Maximum number of simultaneous HTTP Requests / Performance
Date Mon, 03 Apr 2006 09:14:43 GMT
On 4/3/06, Tp <> wrote:
> Hi,
> we have to develop a high performance chat based only on HTML and HTTP
> only for a television company. The biggest issue is performance. The
> chat's output window requires one open HTTP connection per client. This
> means, that when you have 3000 people following the chat that the server
> has to be able to handle 3000 simultaneous ie. open HTTP connections.
> I have read some old benchmark tests. In those Tomcat does not get a
> very good rating compared to other servers like JRun, BEA and others,
> since it does not use NIO or some native methods. I guess I could try
> just to open 3000 threads on my machine which write some output and see
> how it's doing but I guess that does not really tell me anything reliable.
> So I was wondering if anybody can really tell me what Tomcat's (5.5)
> limit is on this? How many simultaneous HTTP connections can Tomcat
> handle and still respond in such a way, that the application stays
> useable. I assume that the machine runs on a Pentium 4 3.2 Ghz with 1 GB
> of RAM under linux and that all the file descriptor limits are set to
> the maximum.
> The second question I have is, that lets assume the limit of a single
> tomcat instance is at 2000 connections, how could I use a cluster and
> loadbalancer to increase the total amount of simultaneous HTTP
> connections of the "Applicaiton" and this really possible? Does anybody
> in here have pratical experience for a live production system, which is
> in use and handles many HTTP connections?

Neither the HTTP protocol (of course, since you control the network
environment, you cannot run into trouble with proxies), nor the
Servlet API have been designed to be used to do biderectional
asynchronous communication and forever running service methods (what
you're actually doing in that case is running your own protocol on top
of HTTP), and in that case, there's no solution except using a large
amount of threads. I don't know if you're aware of it, but the SIP
protocol (and the associated SIP Servlets specification) has been
designed for exactly this sort of usage, and using it or a similar
custom protocol may be a lot better than trying to hack stuff.

OTOH, OSes like recent Linux versions have no problem with lots of
threads (like 5000) as long as threre are enough resources, so you
could test that solution and see how it works.

Rémy Maucherat
Developer & Consultant
JBoss Inc

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message