Asterisk 拥塞原因

Asterisk 拥塞原因

将 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 增加了,您可能正面临资源短缺的问题 - 这是个好问题,这意味着 - 您的业务进展顺利。

  1. 抛开如何计算 ASR 和 ACD 的讨论,从你的表格来看,你使用的是 A2Billing 引擎。现在,你需要注意以下几点:

  2. 您的最大负载应反映您的机器类型。例如,如果您使用的是四核 CPU 服务器,则最大负载 3 就足够了。通常,我会为四核/六核设置 (CORE COUNT - 1),为八核及以上设置 (CORE COUNT - 2)。

  3. 请记住,每次通话时您都会运行 a2billing 脚本。请确保您的 php.ini 设置为脚本运行时提供了足够的内存和资源,否则您将收到错误。

  4. 请记住在 safe_asterisk 中设置 MAXFILES、SYSMAXFILES 和 PRIORITY - 如果不这样做,可能会出现类似的问题。

  5. 如果您正在运行高功率系统,请将 PRIORITY 设置为 -10。这将使 Asterisk 进程在 CPU 访问和资源分配方面具有高优先级。

祝你好运。

相关内容