Some days ago, I got a new customer with an odd and fuzzy request. Initially, he only wanted to handle 500 simultaneous calls.
As I provide White Label VoIP Server with FusionPBX, they use the interface to accomplished this. The bad thing was performance, server was having about 120 overload index (Linux metric). So I spent about 5 hours figuring out what was happening, as it was not normal. My findings were:
- DB handlers were running out
- XML Handler from FusionPBX does not release the DB handlers. As discussed with FusionPBX author, FreeSWITCH seems to try to release it as well, if it is not released it cores dump; this is not confirmed.
- By default, using my RPM's, FreeSWITCH profiles and core will use DB to store information.
- Not the best way to accomplish the goal
After a painful server performance and many chats I understood what they wanted to do: They wanted to answer the calls, and return a ring-back tone, like if no one hasn't answered. To try to fix this, I did the following actions:
- To raise the maximum database connections
- To down the idle and non-used connection timeouts
- To raise FusionPBX Memcached expiration times
- To get rid of IVR configuration
- To add a dialplan using internal tone generator
- To disable unused dialplans
- To unload unused FreeSWITCH modules
As a result, the PBX is handling 100 simultaneous calls with a 0.05 Linux average load. Amazing, isn't it?blog comments powered by Disqus