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