[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Performance?


Kyle Cordes wrote:
> > No, my chat application used plain RMI ;-) Actually, I got 18.000
> > messages at peak (Athlon 650Mhz, 128Mb RAM).
> Rickard,
> With how many connected clients?  


> I am interested in how to build MOM
> systems that can handle a large number of connected clients, each
> generating few messages, but with many messages being "broadcasted" to a
> large number of clients.

I see. Well, from my experience with the chat system the ability to use
"burst mode" as much as possible was *crucial*. That optimization alone
changed the throughput from 300 to 14.000 messages per second in my chat
system. Of course, the chat client could get up to 1000 messages per
burst so it was lousy from a UI point of view, but at least it worked!

> Most discussions of performance testing seem to center around a
> relatively small number of clients (dozen, hundreds) generating a lot of
> activity each.
> (XML-blaster question: how well does it handling thousands of connected
> clients?)
> (Java question: I know that various JVMs have issues with a large number
> of connected sockets, deriving from the need to have a thread (or more)
> for every one, in the current Java networking APIs.  How high could Java
> reasonably go before this becomes a problem?)

Most JVM's crash at about 1000 clients. Currently clustering is the only
solution to this. Asynch I/O in JDK 1.4 will improve this A LOT.

> > Riddle me this:
> > On a particularly sunny and inspiring day you write not one but two
> > letters of poetry to your lady friend. You put them both in the
> mailbox,
> To map this to my question, I would assume you are sending the letter to
> thousands of lady friends :-)

Good point. The basic thing to consider is "how can I get as many
messages as possible to be sent at once?" If you can get it above 1 then
you will see much better performance.


Rickard Öberg

Email: rickard at telkel.com