Scalability question?

Is there an approximation of the capacity of how many users a single instance of openfire can take? i need the ability to handle around 400 visitors sending packets of around 10 KBs each every 1 second, my 3.0 single core P4 is having hard time dispatching all the messages, and therefore some packets are lost. Is there a neat solution or a possible optimization technique for this issue? or i need to cluster the system, or use a multi instance architecture? thanks in advance…

So it sounds like you’‘re sending 400 (somewhat large) packets per second? There shouldn’'t be problems handling that much load. What Java version and Openfire release are you on?

Regards,

Matt

Im using java6, i think the problem is not with the size of the messages, but rather with with the frequency of sending messages, (my application uses openfire to broadcast events from an active webserver for statistics etc…)

Gato has been doing some interesting performance tuning and measuring lately. For example, he was able to get much faster packet throughput by setting TCP_NODELAY to true. I’'ll send this thread to him to see if we can get some input from him.

Thanks,

Matt

Gato posted up a very helpful guide:

http://wiki.igniterealtime.org/display/NINJA/Monitorloadontheserver

hello,

Thank you very much matt for the link, i guess the problem was in the size of TCP buffer for outgoing traffic, and the results improved very significantly, thanks again.

jad939933 wrote:

hello,

Thank you very much matt for the link, i guess the problem was in the size of TCP buffer for outgoing traffic, and the results improved very significantly, thanks again.

Can you include some more details about exactly what you changed and how it affected performance? The more data we can collect, the easier it will be for us to make recommendations to people.

Thanks!

-Matt

hi,

I am using windows xp for development, to increase the MTU I changed the following keys in the registry:

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters Tcp1323Opts=“1”

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters TcpWindowSize

HKLM/SYSTEM\CurrentControlSet\Services\Tcpip\Parameters GlobalMaxTcpWindowSize

the main problem was that the messages were received in a different order than they were sent (and some might be lost, im not sure), so i had to implement extra handlers to sort the messages, since the order is important for my application.