Megaco simple Media Gateway bleeds memory under load.

Peter-Henry Mander erlang@REDACTED
Tue Aug 27 16:05:49 CEST 2002


Hi everyone,

I hope you're not going to tire of my questions, as I have yet another one.

In megaco_messenger.erl the receive_message/4 function spawns a process 
for each received message. The problem I have with this scheme is that 
memory is being consumed by processes spawned in receive_message/4 and 
garbage-collected at a crippling rate, leading to a bottleneck in the 
Media Gateway.

The MG Controller and MG run on separate machines. The MGC is only 
consuming 50%-60% CPU and has a small stable memory footprint while 
issuing over 300 add-modify-subtract request cycles each second, whereas 
the MG is struggling at 99% and has a huge and ever expanding memory 
footprint.

I managed to streamline the MGC by reusing processes instead of spawning 
new ones. This has made it efficient enough to potentially achieve over 
500 call cycles a second, and I wonder if it were possible to use a 
similar scheme in receive_message/4 and use a pool of "process received 
message" processes instead of continually spawning new ones?

Are there any issues I must be aware of before I start "hacking" 
megaco_messenger.erl? Is there a better way than my (possibly naive) 
proposal?

Pete.






More information about the erlang-questions mailing list