AGI导致Asterisk CPU负载过高

简介

Asterisk 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能,能够把你的 x86 机器变成你自己的交换机,还能够当作一台企业级的商用交换机。Asterisk让人激动的事情是它在小企业预算可承受的范围内提供了商业交换机的功能和可伸缩性。

在Asterisk的拨号方案中,可以采用各种语言很方便的通过AGI接口编写实施脚本。脚本和Asterisk之间通过标准的输入输出进行交互。具体AGI的用法就不在这里描述了。

问题描述

[sip-stdexten]
exten => _X.,1,Set(trunk=test)
exten => _X.,n,AGI(test.py,${trunk})
exten => _X.,n,dial(sip/${EXTEN}@${trunk},45)
exten => _X.,n,hangup()

上面的拨号计划,就是采用Python写的一个AGI脚本做了一些扩展应用。该段拨号计划在正常使用的情况下没有任何异常。但是在PBX的并发提高后,系统就会出现CPU负载过高、呼叫出现较大延时的情况。

load average: 83.23, 97.97, 96.79

问题分析

系统平均负载(load average)被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。
那很明显我们的机器是在特定间隔内进程数过多,导致了进程调度不过来。那我们哪来的这么多运行的进程呢?很明显,在拨号计划执行过程中,AGI会启动进行执行脚本,每次呼叫都会执行该进程一次。当呼叫量大的时候,执行进程的数量也很大,这就导致了CPU的负载过高。

问题解决

既然用AGI调用Python脚本会导致这个问题,那么我们可以采用Asterisk 的FastAGI机制,把多进行转为单进程,这样理论上也加快了AGI的执行速度(因为Python脚本的执行,有模块动态加载等过程,使用FastAGI后每次调用就没有了这些过程)。FastAGI的实现采用pystrix,改为FastAGI后问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AGI(Artificial General Intelligence)高分辨率地图是指具备人类智能水平的人工智能系统所创建的地图,并且这些地图具有高分辨率的特点。 AGI高分辨率地图的创建过程通常包含以下几个步骤:首先,系统需要从各种数据源(如卫星图像、航拍照片、地面传感器等)中获取原始地理数据。这些原始数据会被处理和分析,以提取有用的地理信息。其次,通过使用深度学习和计算机视觉等技术,系统能够自动识别和分类出地理要素,如道路、建筑物、河流等。然后,这些识别出的要素会被精确地定位和标记在地图上,形成一个高度详细的地理信息数据库。最后,系统还可以使用机器学习的方法,自动更新地图上的信息,以保持其准确性和实时性。 AGI高分辨率地图在许多领域都有重要的应用价值。例如,在自动驾驶领域,高分辨率地图可以帮助车辆更加准确地感知和理解道路环境,进而提升行驶安全性。在城市规划和建筑设计中,高分辨率地图可以为规划者和设计师提供详细的地理信息,以便更好地进行规划和设计工作。此外,高分辨率地图还可以为应急救援和灾害管理提供有力支持,帮助准确定位灾害区域和优化救援方案。 总之,AGI高分辨率地图的创建和应用将极大地促进人工智能系统与真实世界的连接,为我们提供更加详细、准确和实时的地理信息,为各个领域的智能应用带来巨大的潜力和发展机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值