Has anyone extensively benchmarked ejabberd with Tsung? I'm in the midst of testing a new server and I'm seeing errors occurring that don't really have an explanation for. E.G
stats: error_no_offline xx sum+xx
stats: error_unknown xx sum+xx
stats: error_connect_emfile xx sum+xx
In the case of the last one, I've confirmed via ulimit that ejabberd has more then enough access to nofile descriptor and set ERL_MAX_PORTS to a very high number so there shouldn't be any issues with OS limits as I've seen. Is this error purely on the tsung side of things and can be ignored or is it indicative of an actual issue?
Current test was being run against 1000 users sending 256 characters , online for about 12 minutes with a connection interval of 3/sec.
Samples:
# su - ejabberd -c "ulimit -n"
65535
Portion of ejabberd startup script
start)
su $USER -c "$ERL +K true \
-smp \
-pa /opt/ejabberd/var/lib/ejabberd/ebin \
-env ERL_MAX_PORTS=50000 \
-env ERL_MAX_ETS_TABLES 40000 +P 100000 \
-name ejabberd@`hostname` \
-s ejabberd \
-detached \
.....
Try without =
I didn't use Tsung, but I ran some tests using Jabsimul.
Portion of ejabberd startup script
This looks a little strange: -env ERL_MAX_PORTS=50000
I thought the correct way is: -env ERL_MAX_PORTS 50000
BTW, the start script in ejabberd's SVN says:
And the Erlang runtime system will read the environment variable.
I suppose it helps...
To make sure the ulimit on the user running the benchmark under erlang is also set high enough to process the run.
At this point I have tsung running well enough to get a vague benchmark however I'm not able to reliably gauge the max number of concurrent sessions (with activity) vs connection per second using TLS e.g 1000 concurrent users at 58cps is fine (barely any load) however higher then that and ejabberd (appears) to have a serious memory leak before needing to be manually killed.
I've tried jabsimul but without TLS support it's not providing the info I need to gauge the load (especially if there's something in ejabberd that bleeds under a high cps w/ tls).