将 Asterisk 从一台服务器移至另一台服务器后,我注意到 ASR 下降了 15-20%。我还注意到日志文件中有以下警告
[Dec 8 15:52:00] WARNING[4771][C-00000031] pbx.c: Maximum loadavg limit of 0.900000 load exceeded by 'SIP/889-00000061' (currently 1.010000)!
[Dec 8 15:52:00] WARNING[4771][C-00000031] chan_sip.c: Failed to start PBX (call limit reached)
maxload
设置为 2,后来进行了注释。实际 CPU 负载低于 50%,我不知道 Asterisk 为什么会出错。
mysql> SELECT
-> terminatecauseid,
-> count(terminatecauseid),
-> count(terminatecauseid) * 100 / t.cnt
-> FROM cc_call c
-> cross join ( select count(1) as cnt FROM cc_call n where n.starttime BETWEEN '' AND '') t
-> where c.starttime BETWEEN '' AND ''
-> group by c.terminatecauseid;
+------------------+-------------------------+----------------------------------------+
| terminatecauseid | count(terminatecauseid) | count(terminatecauseid) * 100 / t.cnt |
+------------------+-------------------------+----------------------------------------+
| 0 | 16731 | 3.1444 |
| 1 | 184780 | 34.7277 |
| 2 | 21788 | 4.0948 |
| 3 | 51831 | 9.7411 |
| 4 | 165769 | 31.1547 |
| 5 | 40409 | 7.5945 |
| 6 | 50775 | 9.5427 |
+------------------+-------------------------+----------------------------------------+
删除maxload
有帮助,但我仍然可以看到拥堵程度高于正常水平。据我所知,6 代表 CHANUNAVAIL,5 代表 CONGESTION。
拥塞和 chanuavail 参数的含义是什么?还有什么会影响它?如何区分我自己的 Asterisk 拥塞和 downwstream 软交换机发送的“拥塞响应”?
答案1
为了诊断您的问题,您需要运行“tcpdump”跟踪一天或类似的时间。另一个选择是使用 voipmonitor (voipmonitor.org) 或 homer (sipcapture.org) 等工具。
拥塞消息可能由各种 SIP 结果代码引起。通常,拥塞表示您已用完了远程端上分配的所有通道。CHANUNAVAIL 通常表示发生了网络故障或资源故障,并且您要使用的通道资源不可供您使用。
您对 ASR 的计算非常全面,您需要根据特定的目的地前缀精确地确定 ASR 计算。例如,您的 ASR 是前缀 44 还是前缀 33。这样,您将能够精确地确定 ASR 下降的准确原因。我还建议您检查您的 ACD(平均通话时长),如果您的 ACD 增加了,您可能正面临资源短缺的问题 - 这是个好问题,这意味着 - 您的业务进展顺利。
抛开如何计算 ASR 和 ACD 的讨论,从你的表格来看,你使用的是 A2Billing 引擎。现在,你需要注意以下几点:
您的最大负载应反映您的机器类型。例如,如果您使用的是四核 CPU 服务器,则最大负载 3 就足够了。通常,我会为四核/六核设置 (CORE COUNT - 1),为八核及以上设置 (CORE COUNT - 2)。
请记住,每次通话时您都会运行 a2billing 脚本。请确保您的 php.ini 设置为脚本运行时提供了足够的内存和资源,否则您将收到错误。
请记住在 safe_asterisk 中设置 MAXFILES、SYSMAXFILES 和 PRIORITY - 如果不这样做,可能会出现类似的问题。
如果您正在运行高功率系统,请将 PRIORITY 设置为 -10。这将使 Asterisk 进程在 CPU 访问和资源分配方面具有高优先级。
祝你好运。