Skip to end of metadata
Go to start of metadata

 

These are some areas to consider when trying to performance tune your Asterisk installation.

Threadpools

There are two threadpools of interest:  pjsip and stasis.

Icon

Any changes to threadpool settings require a full Asterisk restart. A reload is insufficient.

 

PJSIP Threadpool:

The system section of pjsip.conf (or the ps_systems table in the database) contains 2 settings that control the threadpool used for the stack:


Stasis Threadpool

Although the stasis message bus is not used much for simple call processing, it is used heavily for ARI and AGI processing, transfers, conference bridges, AMI, CDR and CEL processing, etc.  The threadpool is configured in stasis.conf:

If you don't need AMI, CDR, or CEL then disabling those modules will reduce resource usage.  The CDR module uses a lot of processing to create the CDR records and can easily get backed up on a busy system.

PJSIP Protocol Tuning

Timers

The timer_t1 and timer_b settings are in the system section of pjsip.conf (or the ps_systems table in the database)

Identification Priority

The order in which endpoint identification methods are tried when an incoming request is received directly affects transaction rate.  The default order is set in the global of pjsip.conf (or the ps_globals table in the database).

 

Sorcery/Database

While storing pjsip objects in the pjsip.conf results in the fastest access time during call processing, a config change requires the entire file to be re-written and the res_pjsip module to be reloaded.  Using backend database for storage is most convenient for configuration but will be slowest for access time during call processing.  The solution is to use the database for storage and use sorcery to cache the objects.  This will result in the same access times as using pjsip.conf.  

Setting up caching

The sorcery caches are defined in sorcery.conf.

Flushing the caches:

The sorcery memory cache Asterisk CLI commands will allow flushing caches and individual objects from a specific cache.  There are also equivalent AMI commands (SorcerymemoryCache*) that do the same.  After you make all pjsip configuration changes, call the appropriate AMI commands to flush objects and caches where appropriate.  This is necessary for Asterisk to see the changes made in the database immediately.


  • No labels