Minimizing Delay Between Call End and CDR Database Storage
Behavior
The VoIPmonitor sniffer service uses buffers for queuing inserts into the database. These buffers are either flushed to disk or processed from RAM, depending on the query_cache option (yes or no). When the database service performs well, the CDR can take up to 35 seconds after the call ends to appear in the database (and be visible in the GUI’s CDR view).
Timeout after bye
5 sec. There is a hardcoded 5-second timeout after the BYE is confirmed when no RTP continues, ending the interception of the call and creating the CDR.
Cleanup calls period
20 sec. The cleanup_calls_period option is configurable in the config file and defaults to 10 seconds. This period needs to pass twice to push the CDR to the query cache. Lower values increase speed but decrease performance.
Query cache
10 sec. The query_cache option is a 10-second timeout for flushing the queries from the files to the database with the default query_cache settings. You can disable this by setting query_cache=no in /etc/voipmonitor.conf.
Setting the Flushing Buffers as Fast as Possible
(Be aware that setting the values below may result in worse performance of the VoIPmonitor service because it increases the number of IOPS required for storage.)
In /etc/voipmonitor.conf:
quick_save_cdr = yes cleanup_call_period = 5 query_cache = no