Hi everybody
I'm trying to create restcomm cluster. and i need to use some performance test tool to check health of this cluster.
I have found a few scripts in official git repo -
https://github.com/RestComm/RestComm-Core/tree/master/load_tests
Also i have some statistics -
http://www.telestax.com/restcomm-scalability-and-high-availability/
now I am trying to reproduce these results.
so I have added PROD_MODE env variable to my fork of restcomm docker container. It reconfigures restcomm to use 8G RAM, setups WARN log level and turns off akka logs.
https://github.com/hamsterksu/Restcomm-Docker/blob/7.5.0/scripts/restcomm_conf.sh#L350
This docker images is available in docker hub - hamsterksu/restcomm:7.5.0.800 or hamsterksu/restcomm:7.6.0.824
Also I have created docker container with sipp test tool and my own ivr app server
Test container-
https://github.com/dataart-telco/ivrtest-docker
Ivr app -
https://github.com/dataart-telco/ivrtest
It’s pretty simple ivr app with 2 responses – makes gather and plays confirmation.
I have tested it with apache ab test. It can handle around 34k request per second(so it’s not a bottleneck)
Response for incoming call:
<Response>
<Gather action="
http://192.168.176.186:7090/gather" method="POST" numDigits="1">
<Play>
http://192.168.176.186:7080/pcap/demo-prompt.wav</Play>
</Gather>
<Hangup/>
</Response>
demo-prompt.wav is shared by nginx server. It’s located in docker container too
both docker containers(restcomm and ivrtest) are run in host mode(w/o docker proxy) on the same machine w/o any limitation (core i5 with 32G ram)
In the root directory of ivrtest-docker you can find 2 scripts to run test:
1. run_restcomm.sh – start restcomm
2. run.sh – just run ivrtest
My app calculates statistics of incoming and gathered calls. It will be printed in the end of test
But my result is not good.
It's dump from log file with java opt for jboss.
JAVA_OPTS: -server -XX:+UseCompressedOops -Xms2048m -Xmx8192m -Xmn512m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycle=100 -XX:CMSIncrementalDutyCycleMin=100 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:MaxPermSize=512m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Djboss.server.default.config=standalone-sip.xml
I made 2 test with different settings:
Test #1
I try to make 5000 calls with 80 cps. Rtp port range is 64000-65500
The result is – ~24.1 cps and my app receives only ~1400-2600 gathering answers(as i understand it means that restcomm doesn't handle incoming traffic correctly).
Test #2
Makes 5000 calls with 40 cps. Rtp port range is 64000-65500
The result is – 23.959 cps and my app receives ~3000-3400 gathering answers.
----------------
I run both test for 2 versions of Restcomm: 7.5.0.800 and 7.6.0.824
1.1 version 7.5.0.800
i got a lot of errors in the log file
it's part of my log file:
https://www.dropbox.com/s/x4zxidincowhk3g/restcomm_perf.log
also i have found a lot of messages in log file like:
12:16:56,481 ERROR [org.mobicents.protocols.mgcp.stack.JainMgcpStackProviderImpl] (Thread-596) The TransactionHandler not found for TransactionHandle 3786 May be the Tx timed out. Event = 400 0The transaction could not be executed due to a transient error
1.2 version 7.6.0.824
i juts have found errors similar to
13:03:39,090 ERROR [org.mobicents.protocols.mgcp.utils.PacketRepresentationFactory] (Thread-597) PRFactory underflow. Count = 31
13:03:39,090 ERROR [org.mobicents.protocols.mgcp.utils.PacketRepresentationFactory] (Thread-597) PRFactory underflow. Count = 32
13:03:39,090 ERROR [org.mobicents.protocols.mgcp.utils.PacketRepresentationFactory] (Thread-597) PRFactory underflow. Count = 33
13:03:39,090 ERROR [org.mobicents.protocols.mgcp.utils.PacketRepresentationFactory] (Thread-597) PRFactory underflow. Count = 34
but seems it doesn't print other errors types like timeout
------------
Could somebody verify my test and settings. maybe something is wrong. maybe i use wrong strategy. any your feedback will help me.
script -
https://github.com/dataart-telco/ivrtest-docker/blob/master/files/test-ivr.sh
sipp scenario -
https://github.com/dataart-telco/ivrtest-docker/blob/master/files/tests/ivr/ivr-sipp.xml
Thanks,