Leaky Bucket and Refactoring
Over the last 6 weeks there has been a bit of a slowdown in new features with the sipswitch this has been in due solely to the memory leak that we have been chasing down during that period. I’ve posted on the forums site about the problem 3 times in the News section. A number of times we thought the issue was fixed only to find the sipswitch memory usage creeping up again. This is a real problem as if it’s not caught the sipswitch will at the very least become slow and unresponsive and at worst will crash.
One issue was found in the IronRuby engine that was a definite problem and a workaround was put in place that made a big difference. The ironRuby developers were made aware of the problem and hopefully it will be fixed over time. However despite that we still supsect that even with the workaround in place there is still a slow leak occurring. As such we have been working to re-factor the software so that each of the individual agents can run in its own process. The four main agents are the SIP Proxy, the SIP Registrar, the Registration Agent and the Monitoring Console. Currently they all run in the same process which is a nice easy approach to manage but not so good for troubleshooting and scalability.
The idea is to be able to have the sipswitch software able to run as a single process, useful when run locally, or to be able to split out into multiple processes. The splitting out has required quite a bit of refactoring as when everything is in the same process information can be share easily, things such as the Proxy looking up the contact on the Registrar. If they are split out some extra work is required.
So that’s it another quick update for anyone wondering what has been going on in the background. Hopefully we’llg et all this ironed out and get back to adding features in the near future. At the end of the day if the leak has been caused by IronRuby, which I strongly suspect, then it’s still been worth it. I can’t imagine not having a Ruby dialplan now I’ve had a taste.
Regards, Aaron

















































