I'm doing sipp performance measurements with openser 1.2 and I was
surprised on how much memory the openser processes do allocate when
confronted with a high call-per-second load.
I observed the following behavior:
One sipp instance creates SIP requests that get routed through openser
and forwarded to another sipp instance running in UAS mode. The sipp
scenario looks like
INVITE ---------->
100 <----------
180 <----------
200 <----------
ACK ---------->
Pause [ 10.0s]
BYE ---------->
200 <----------
Nothing special here. The openser instance record routes the SIP
requests and forwards them in transaction stateful mode (t_relay) to the
sipp UAS instance. The routing script looks like:
route{
if (!method=="REGISTER") record_route();
if (loose_route()) route(1);
if (uri==myself) rewritehost("xx.xx.xx.xx");
route(1);
}
route[1] {
if (!t_relay()) sl_reply_error();
exit;
}
( xx.xx.xx.xx is the IP of sipp UAS)
Running sipp with a call rate of 500 cps results in 45 MB of memory
allocation per openser process after a few seconds. What could cause
this behavior, message queuing maybe? But then again having a message
queue of 40+ MB seems to be unrealistic.
And the memory consumption goes up the longer the test runs until
openser dies because of out-of-memory.
I observed the same behavior with openser 1.1 and 1.2. Is this a memory
leak or did I miss some settings? And what's the best method to debug
memory issues with openser?
thanks in advance,
Christian