ubuntu – 星号 – 非常高的负载平均值,没有任何理由

前端之家收集整理的这篇文章主要介绍了ubuntu – 星号 – 非常高的负载平均值,没有任何理由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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相关文章