Asterisk服务器出现问题,显示高负载平均值,我无法解释.
Ny设置是:

>星号13.1.0
> Linux 3.13.0-24(Ubuntu Server)
>双插座(Xeon E5-2620)服务器,支持HT – 总共24个核心; 32G RAM

星号用于发送语音消息.我有一个上游SIP提供商,没有硬件电话卡. sip.conf中只允许使用alaw / ulaw.

我使用AMI Originate命令开始通话;然后我在上下文中执行Playback()以发送预先录制的语音消息(本地ext4 FS中的ulaw文件).没有其他与被叫者的交互,没有IVR菜单,没有通话录音.一些非常简单的Perl AGI脚本将调用结果保存到DB(MySQL和MSsql(通过Perl Sybase));通常每个Originate有1-2个AGI呼叫.此外,几乎没有扩展处理 – 字面上为CDR()和几个AGI调用的20行预置标准.我只使用一个AMI连接来启动所有呼叫.

具体是 – 大多数电话都没有回答.我每秒最多拨打50个电话,但实际上只有5-10个电话被接听并收听.

问题是 – 我的cpu使用率非常低,但LA非常高.
如果我发现20-25 cps – 20-24 LA,但是如果我试图将它增加到50cps,那么洛杉矶会爬升到90. ~50LA之后,音质有问题(我可以理解为什么).

大多数Asterisk用户声称他们使用功能较弱的硬件可以获得更多的通话量.

# uptime
 12:56:36 up 9 days,15:52,1 user,load average: 32,10,33,45,10

#vmstat -w 1
procs ---------------memory-------------- ---swap-- -----io---- -system-- ------cpu-----
 r  b     swpd     free     buff    cache   si   so    bi    bo   in   cs us sy id wa st
 3  0        0 30322760   199176   832452    0    0     0     0 237471 38738  5  8 87  0  0
 3  0        0 30319148   199176   832500    0    0     0     0 188340 38960  4  6 90  0  0
 3  0        0 30325528   199176   832564    0    0     0    26 319903 43916  6 10 83  0  0
105  0        0 30270288   199176   832568    0    0     0    14 175216 39014  4  6 90  0  0
16  0        0 30307908   199176   832572    0    0     0     0 323598 43428 11 12 77  0  0

# mpstat 1
Linux 3.13.0-24-generic (asterisk2)         25.02.2015      _x86_64_        (24 cpu)
13:18:09     cpu    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
13:18:10     all    5,77    0,00    7,90    0,00    0,17    0,00   86,16
13:18:11     all    5,56    0,00    8,83    0,21    0,00   85,40
13:18:12     all   10,29    0,00   11,42    0,25    0,00   78,03
13:18:13     all    9,70    0,00   10,75    0,00   79,34

# uname -a
Linux asterisk2 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) cpu E5-2620 0 @ 2.00GHz
stepping        : 7
microcode       : 0x70d
cpu MHz         : 2000.216
cache size      : 15360 KB
physical id     : 0
siblings        : 12
core id         : 0
cpu cores       : 6
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4000.43
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical,48 bits virtual

...

processor       : 23
vendor_id       : GenuineIntel
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) cpu E5-2620 0 @ 2.00GHz
stepping        : 7
microcode       : 0x70d
cpu MHz         : 2000.216
cache size      : 15360 KB
physical id     : 1
siblings        : 12
core id         : 5
cpu cores       : 6
apicid          : 43
initial apicid  : 43
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips        : 4001.85
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical,48 bits virtual

# cat /proc/interrupts
            cpu02      cpu23
   0:         24          0  IR-IO-APIC-edge      timer
   8:          1          0  IR-IO-APIC-edge      rtc0
   9:          2          0  IR-IO-APIC-fasteoi   acpi
  16:         33          0  IR-IO-APIC-fasteoi   ehci_hcd:usb1
  23:        107          0  IR-IO-APIC-fasteoi   ehci_hcd:usb2
  88:          0          0  DMAR_MSI-edge      dmar0
  89:          0          0  DMAR_MSI-edge      dmar1
  90:    1855369          0  IR-PCI-MSI-edge      ahci
  91:          1          0  IR-PCI-MSI-edge      eth0
  92:      11296          0  IR-PCI-MSI-edge      eth0-TxRx-0
  93:        790          0  IR-PCI-MSI-edge      eth0-TxRx-1
  94:   85066770          0  IR-PCI-MSI-edge      eth0-TxRx-2
  95:       6851          0  IR-PCI-MSI-edge      eth0-TxRx-3
  96:     174614          0  IR-PCI-MSI-edge      eth0-TxRx-4
  97:    4846139          0  IR-PCI-MSI-edge      eth0-TxRx-5
  98:     136593          0  IR-PCI-MSI-edge      eth0-TxRx-6
  99:    1294090          0  IR-PCI-MSI-edge      eth0-TxRx-7
 109:          2          0  IR-PCI-MSI-edge      ioat-msix
 110:          2          0  IR-PCI-MSI-edge      ioat-msix
 111:          2          0  IR-PCI-MSI-edge      ioat-msix
 112:          2          0  IR-PCI-MSI-edge      ioat-msix
 113:          2          0  IR-PCI-MSI-edge      ioat-msix
 114:          2          0  IR-PCI-MSI-edge      ioat-msix
 115:          2          0  IR-PCI-MSI-edge      ioat-msix
 116:          2          0  IR-PCI-MSI-edge      ioat-msix
 117:          0          0  IR-PCI-MSI-edge      ioat-msix
 118:          0          0  IR-PCI-MSI-edge      ioat-msix
 119:          0          0  IR-PCI-MSI-edge      ioat-msix
 120:          0          0  IR-PCI-MSI-edge      ioat-msix
 121:          0          0  IR-PCI-MSI-edge      ioat-msix
 122:          0          0  IR-PCI-MSI-edge      ioat-msix
 123:          0          0  IR-PCI-MSI-edge      ioat-msix
 124:          0          0  IR-PCI-MSI-edge      ioat-msix
 NMI:       3642       1990   Non-maskable interrupts
 LOC:   53207172   19108700   Local timer interrupts
 SPU:          0          0   SpurIoUs interrupts
 PMI:       3642       1990   Performance monitoring interrupts
 IWI:     804483      60489   IRQ work interrupts
 RTR:          0          0   APIC ICR read retries
 RES:   60096784   31495629   Rescheduling interrupts
 CAL: 4046461325 4101338127   Function call interrupts
 TLB: 2390847639 1479027286   TLB shootdowns
 TRM:          0          0   Thermal event interrupts
 THR:          0          0   Threshold APIC interrupts
 MCE:          0          0   Machine check exceptions
 MCP:       2501       2501   Machine check polls
 ERR:          0
 MIS:          0

# atop
CPL | avg1   22.45 |  avg5   22.65 |              |  avg15  22.74 |              |  csw   379728 | intr 1612164 |               |              |  numcpu    24 |
MEM | tot    31.4G |  free   28.4G | cache 829.3M |  dirty   0.0M | buff  194.7M |  slab  188.0M |              |               |              |               |
SWP | tot    32.0G |  free   32.0G |              |               |              |               |              |               | vmcom 737.1M |  vmlim  47.7G |
MDD |          md0 |  busy      0% | read       0 |  write     12 | KiB/r      0 |  KiB/w      4 | MBr/s   0.00 |  MBw/s   0.01 | avq     0.00 |  avio 0.00 ms |
DSK |          sda |  busy      1% | read       0 |  write     11 | KiB/r      0 |  KiB/w      5 | MBr/s   0.00 |  MBw/s   0.01 | avq     1.00 |  avio 12.7 ms |
DSK |          sdb |  busy      1% | read       0 |  write     11 | KiB/r      0 |  KiB/w      5 | MBr/s   0.00 |  MBw/s   0.01 | avq     1.00 |  avio 11.6 ms |
NET | transport    |  tcpi    1994 | tcpo    2452 |  udpi   17159 | udpo   14811 |  tcpao    117 | tcppo      1 |  tcprs      0 | tcpie      0 |  udpip      0 |
NET | network      |  ipi    19235 | ipo    17268 |  ipfrw      0 | deliv  19235 |               |              |               | icmpi      7 |  icmpo      0 |
NET | eth0      0% |  pcki   19345 | pcko   17272 |  si 3256 Kbps | so 2954 Kbps |  coll       0 | erri       0 |  erro       0 | drpi       0 |  drpo       0 |

你可以看到,cs和vmstat字段中的数字非常高.我无法解释他们.

所以,据我所知 – 有很多线程可以在很短的时间内执行(你可以在vmstat输出中看到一个这样的突发).但是我的设置会导致什么呢?

我试过了:

>在sip.conf中使用编解码器打包(有一个想法,我发送了太多的微包);
>改变播放文件格式;
>完全禁用AGI脚本调用(通过在extensions.conf中注释掉它们);
>改变我使用AMI通道的方式(改变间隔和爆发量以平整负载)

但没有任何帮助.

我检查了我能想到的一切 – 没有磁盘IO,这台服务器上没有其他应用程序.
在mailllist中有些人有类似的问题,但这还没有解决,而且很久以前.

还有一个想法 – 我有一个服务器有相同的问题与非常相似的硬件和Asterisk配置,但有Asterisk 1.8(FreePBX)和CentOS正在使用.我怀疑,这导致了我的特殊用法.

也许,这是AMI的核心问题,我应该使用其他东西进行大规模初始化呼叫?

EDIT1:
这是我的LA图:

EDIT2:这是Asterisk strace.它在高负载时相对相同.我自己不是linux程序员,无法正确解释它.

# strace -f -q -c -p 17150
^C% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 42.05 1595.370429       13209    120778     18231 futex
 41.21 1563.521630     6304523       248        14 restart_syscall
 15.96  605.470340        4726    128105        26 poll
  0.23    8.811410       12037       732           nanosleep
  0.16    5.903679          26    228693     22073 read
  0.15    5.600020          66     85202           write
Ookay,我想通了.这只是解决方法,但问题已降至可接受的水平.

在一天中间不想要的重启后,我注意到Load Average大幅下降了!我检查了我们的服务器监控系统 – 洛杉矶总是在3-4小时的连续(和稳定)负载中逐渐爬升.这是不明显的,因为我无法在前一天重新启动它.

正如我所说,我有几个Perl脚本,通过AGI()应用程序调用.其中一个叫做h扩展;它只运行一个简单的数据库查询.事实证明,有时DB会有点过载;查询必须等待200-500ms; Asterisk必须等到Perl脚本完成.

所以,我在开始时使用fork()我的Perl脚本 – 立即使AGI()调用返回.这帮了很多忙!洛杉矶变得稳定.这不是一个完整的解决方案 – 它似乎仍然在Asterisk的内部腐败,但速度慢得多,这几乎不是问题.

对于那些寻求准备使用的代码片段(不要忘记在fork()之前获取所有变量,因为您将无法访问$AGI之后):

my $AGI = new Asterisk::AGI;

# get all your variables here
my $var = $AGI->get_variable('var');

undef $AGI;

if (fork) { exit 0; };
open STDIN,'<','/dev/null'; # dont forget to free your parent's file handles
open STDOUT,'>','/dev/null';
open STDERR,'>&STDOUT';

这似乎是一个错误 – 但我想知道为什么除了我以外没有其他人有这样的问题.

编辑1:嗯,消除AGI调用后问题完全消失了.我只做了几个自定义ODBC函数(func_odbc.conf),它只保存异步处理的信息(稍后由单独的perl守护进程处理).洛杉矶从20-25下降到0.5-0.9(!).我从未想过AGI会造成如此巨大的负担.

ubuntu – 星号 – 非常高的负载平均值,没有任何理由的更多相关文章

  1. .net-3.5 – 在将程序集集成到MSI之前对程序集进行模糊处理

    我有一个VS.NET2008解决方案,其中包含一个安装项目.此安装项目获取我的其他项目的输出并生成MSI.到目前为止,这么好……我希望MSI中包含的程序集被混淆.这种混淆本身很简单,但是如何将这个预步骤(混淆)引入MSI建筑?使用诸如Finalbuilder之类的构建工具来自动执行此过程.例如,构建程序集,然后对它们进行模糊处理,最后构建安装项目.

  2. windows-installer – Visual Studio MSI安装程序

    我有一个Web安装程序项目安装程序,我想默认安装过程中选择的站点和应用程序池.此外,我希望产品的名称在安装程序的构建过程中附加当前版本号.任何帮助将不胜感激!

  3. 安装程序 – 如何通过msi升级

    我想通过msi设置升级我的产品.两个msi的升级代码保持不变,因为它是相同的产品系列.即使我更改msi的版本/产品代码进行更新,它只是告诉我产品已经安装或要求我修复它.它不提供替换当前安装的更新选项.我正在使用VisualStudio2008Pro生成msi设置在安装项目中更改Version属性时,VisualStudio应提示您也更改ProductCode.你必须这样做.然后,您还必须将Remo

  4. windows – 如何同步安装MSI?

    要进行任何MSI包的无人参与安装,只需使用以下命令:但是,这会触发异步安装:如果您碰巧链接2个依赖安装,则必须等待第一次安装才能完成.有没有办法从命令行执行此操作?我有幸运气:从2005年开始于thisblogpost年.希望你在08年找到它.

  5. windows-services – 卸载Windows服务时,已安装的产品与安装源错误不匹配

    当我尝试从控制面板卸载Windows服务时,我收到错误“安装的产品与安装源不匹配,直到提供匹配的源或已安装的产品和源同步,此操作不能被执行“.实际上我确实有原始的MSI文件,但我在安装后修改了配置文件中的一些设置(安装它的地方),这可能导致它,我现在如何卸载它?您认为原始MSI可能不是真的.听起来你已经安装了PackageCode(GUID)A并且现在你有了一个带有PackageCodeB的MSI

  6. 无法在MSI中运行Wix自定义操作

    我正在尝试为我的Wix安装创建一个自定义操作,它只是不起作用,我不确定为什么.这是适当的Wix文件中的位:这是我的自定义操作的完整类文件:该操作由UI中的按钮按下(现在):当我运行MSI时,我在日志中收到此错误:它给我的两个错误代码或消息都不足以告诉我什么是错的.或许我只是不明白他们说的是错的.起初我以为可能是因为我使用的是Wix3.5,所以为了确保我尝试使用Wix3.0,但我得到了同样的错误.关于我做错的任何想法?

  7. 如何在Windows中获取PCI区域大小?

    我需要扫描我的PCI总线并获取特定供应商的特定设备的信息.我的目标是找到AMD显卡的PCI区域大小,以便将该卡的PCI内存映射到用户空间,以便进行i2c传输并查看来自各种传感器的信息.为了扫描PCI总线,我在一年前下载并编译了pciutils3.1.7forWindowsx64.据说它使用DirectIO.这是我的代码.正如您在我的printf行中看到的,我尝试打印一些数据,我成功打印了devic

  8. 从MSBuild引导程序启动x86或x64 MSI

    所以我有一个基于WiX的MSI安装了一些设备驱动程序,因此我有一个x64和x86版本.该软件包还具有.NET3.5依赖性,因此我正在生成一个引导程序来执行此操作,然后启动MSI.我的问题是,是否有人知道创建一个引导程序的方法,该引导程序将检测它正在运行的平台并启动相应的MSI.我已经用Google搜索了这样的解决方案,到目前为止还没有发现任何问题.谢谢!

  9. windows-installer – 如何从msi包中提取ProductCode?

    我想稍后使用它来通过msiexec卸载msi,如here所述我可以想到几十种方法.您目前使用和/或使用哪些编程语言?

  10. windows – 手动创建MSI补丁(.msp)?

    不是.补丁是两个可安装映像的增量.要生成增量,即使差异非常小,您也需要两个图像.

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部