We have built a call center application by using MeetMe conferences in Asterisk v13.21.
Our current AGI scripts developed in Perl and PHP, but when we are having more calls it is creating too much load on asterisk and due to that calls are getting skipped and asterisk is getting crashed sometimes.
So, we are thinking to rebuild those AGIs using some other scripting language such as NodeJS, C or Python etc which can give us better performance with high number of calls.
Are you using AGI or FastAGI? If using AGI then you should move to FastAGI as the way AGI works has inherent performance repercussions at large scale. This is why FreePBX moved their things to FastAGI[1].
fastagi should improve performance, as interpreter doesn’t have to be continually reloaded, and any pre-compilation only happens once. Obvious binaries, e.g. compiled C, will be faster to start that true scripts.
I would have thought that most AGI scripts were not CPU intensive, so there might be slight negative effects from just in time compilation, over simple interpretation.
this is from my experience from live servers before i installed hhvm the sound would be little ruff after i installed it i became good
it is a php problem that need jit
Isn’t eagi() just like agi() but enhanced with inbound audio?
From core show application eagi:
Using ‘EAGI’ provides enhanced AGI, with incoming audio available out of band on file descriptor 3. In all other respects, it behaves in the same fashion as AGI.
fastagi() (if coded correctly) talks to a daemon thus avoiding reloading an interpreter and re-parsing your script.
Personally, I’ve had great success in writing AGIs in C.
It’s not just reloading an interpreter and re-parsing your script, but the act of spawning a process involves forking Asterisk itself. Under heavy use or with large memory consumption this operation can be expensive and time consuming, resulting in increased load and audio issues.