I’m running 188.8.131.52 with CEL logging over ODBC to MariaDB 5.5.41 on the same CentOS 7 machine.
I’ve noticed that the CDR entries made are all in-time, e. g. the call will take place and the CDR entry is immediately written into the CDR table in the MariaDB database.
However, CEL events for that CDR (which I need to process for a realtime display feature in my dialer software) are always several hours after the fact. E. g. I will make a call at 09:30, see the call immediate pop up in the MariaDB CDR table, but only at about 15:15 that afternoon will I see that call’s CEL events come into the CEL table, from Asterisk…. I have examined the `show processlist` in MariaDB exhaustively to establish this fact.
The system doesn’t appear loaded, load average is about 1.1 – it’s a quad-coare HT Intel Xeon E3-1225 with 8GB of DRAM running on an SSD for main storage.
The system processes about 30 000 calls every 8 hour day, and services 90
I can stop and restart the MariaDB instance for several minutes, when I
restart it it immediately picks up on the “slow” CELs from where it was interrupted – more evidence that Asterisk is very slowly streaming the CELs through. I thought MariaDB was the bottleneck, but apparently not?
If I make test inserts from a script into the CEL table, all of them complete so quickly a time indication does not even register for the query in MariaDB. Simple test queries on the CEL table are also instant, not even counting in the internal MariaDB query duration timer.
Can anybody explain why this is that the CELs asterisk emits over ODBC are so delayed? Are CELs intended NOT to be realtime?
So, logically, Asterisk appears to be caching CELs to the tune of hundreds of thousands of them at any given time – meaning if it is stopped (either killed, or core stop gracefully’ed, or just “core stop now”) potentially hundreds of thousands of CELs will just evaporate irretrivably.
What can I do to mitigate this extremely slow populating of CELs over ODBC?