Many people asked for a script to stress openfire when clustering is enabled. The document How to load test Openfire with Clustering? contains a load generation script and explains how to use it. It’s good for stress testing openfire in general and in particular when using clustering.
We are still trying to reach the Openfire limit. During the stress test we are running out of clients, so far we could simulate 170,000 users.
Our partial results are the following:
Openfire opensource in 1 machine supported 170k connected users that were changing their presence, sending messages and requesting for their VCards. CPU usage was around 30-50% and it consumed 1GB of memory.
With 3 cluster nodes, CPU and memory consumptions decreased considerably.
Soon we will post more information about the stress test. We are trying to reach much more users.
You should try to simulate your requirements or reality. If your users are persons then I doubt that having a roster of 250 contacts is something that people will be able to easily handle. I think that a roster bigger than 100 is already too big for a person to handle unless the client is giving you easy access to the person you want to talk to. Probably a roster of 50 users has a “reasonable” size so that you can easily find the person you want to talk to.
Having said that, if in your installation people will commonly have 250 contacts in their rosters then you should go with that number.
To everyone who can’t access the script, it’s very likely a permissions issue for some reaons. So if a board admin can adjust the file permission to registered users or anonymous that should take care of it.
C:\Program Files\Java\jre6\LoadTestScripts>java -classpath xpp.jar;. OpenfireClu
sterStressTest
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at OpenfireClusterStressTest.send(OpenfireClusterStressTest.java:401)
at OpenfireClusterStressTest.testMultipleLogin(OpenfireClusterStressTest
.java:133)
at OpenfireClusterStressTest.main(OpenfireClusterStressTest.java:46)