高负载,低CPU,内存和磁盘IO – Highend服务器

这个问题一直困扰着我,在过去的几天花了超过40个小时深入调查这个问题。

实际上,我们运行的是星号1.4.42,我知道它是旧的,但它是最后一个真正稳定的星号版本,与我的上游提供商有关的传真(升级不是一个选项)。

现在的问题是,我们有以下spec服务器:

戴尔Poweredge 1950

四核至强2.5Ghz E5420

8 GB ECC Ram

4 x 73GB SAS 10k RPM HDs

戴尔PERC 5 RAID控制器在RAID 10

Centos 5.9 X64

磁盘格式化EXT3

现在的问题是,我们有100个并发呼叫星号的服务器负载非常高。 我想不明白。 我有另一台服务器是类似的规格,但它的四核core2duo,突袭1,2 x 250GB 7,200 RPM HD和8GB非ECC内存,处理200 +并发呼叫,约0.3服务器负载。

我真的到了这一端,不能弄明白。

我附上了top和iotop结果的屏幕截图

屏幕截图显示CPU使用率低,磁盘IO上的内存使用率低,等待时间为0%

顶部 – http://chostwales.com/images/hosted/Super-load.jpg

iotop – http://chostwales.com/images/hosted/HighDISKIO.jpg

任何帮助/想法将真正真正赞赏这一点。

为了说明这是100个并发呼叫,每秒约有1个新呼叫。 (如上所述,我有服务器less得多的规格做了10个新的电话有史以来第二次,负载很难预算)

澄清:

  • 没有通话录音/监听
  • 转码是大约30%的电话。 (但是,从理解这将是CPU)
  • 我们没有运行任何PRI的

cat / proc / interrupts显示(目前没有系统利用率)

[root@IS-21418 ~]# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 7855099 0 0 0 IO-APIC-edge timer 1: 3 0 0 0 IO-APIC-edge i8042 8: 1 0 0 0 IO-APIC-edge rtc 9: 0 0 0 0 IO-APIC-level acpi 12: 4 0 0 0 IO-APIC-edge i8042 66: 24 0 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4 74: 34 106102 0 0 IO-APIC-level uhci_hcd:usb3, uhci_hcd:usb5 82: 4143 50727 0 0 IO-APIC-level megasas 90: 123985 0 0 0 PCI-MSI eth0 NMI: 435 195 209 215 LOC: 7852754 7851976 7852615 7851820 ERR: 0 MIS: 0 [root@IS-21418 ~]# vmstat 1 20 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ rb swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 7318888 23108 296540 0 0 125 61 1169 2581 2 3 93 1 0 0 0 0 7318708 23124 296524 0 0 8 280 9704 20440 7 6 87 0 0 0 0 0 7318820 23140 296768 0 0 128 280 9144 19752 2 5 93 0 0 0 0 0 7318820 23180 296728 0 0 0 1620 8162 16012 2 2 97 0 0 0 0 0 7318940 23208 296760 0 0 12 392 9729 22355 3 5 92 0 0 0 0 0 7318544 23216 296752 0 0 0 100 9679 20152 2 2 96 0 0 0 0 0 7317852 23232 296836 0 0 8 332 9753 21294 8 9 84 0 0 0 0 0 7317720 23240 296828 0 0 4 160 9702 22166 3 3 95 0 0 0 0 0 7317612 23248 296908 0 0 0 192 9643 20168 1 4 95 0 0 0 0 0 7317340 23256 296900 0 0 0 112 9043 19541 2 2 96 0 0 0 0 0 7315860 23264 296944 0 0 4 156 9025 21814 3 4 92 0 0 0 0 0 7315624 23288 297176 0 0 140 504 9221 19047 6 6 87 1 0 0 0 0 7314872 23296 297140 0 0 4 112 9499 21123 3 8 89 0 0 3 0 0 7314492 23344 297092 0 0 4 1784 9725 24151 5 6 88 0 0 1 0 0 7314796 23352 297192 0 0 0 176 9624 22662 4 7 89 0 0 3 0 0 7314556 23368 297176 0 0 4 220 9789 23502 5 6 88 0 0 2 0 0 7313820 23384 297196 0 0 4 348 9531 23117 14 13 74 0 0 1 0 0 7313468 23432 297148 0 0 12 504 9852 25504 6 11 83 0 0 2 0 0 7313104 23440 297268 0 0 4 112 9610 26564 6 7 88 0 0 0 0 0 7312364 23464 297244 0 0 128 356 9608 23673 5 8 87 0 0 

Dmesg链接如下

亲切的问候

像这样的事情变化很大。 例如,你正在录音吗? 如果是这样,你使用的是Monitor还是MixMonitor? 监视器在与调用相同的线程中处理,MixMonitor在它自己的线程中。 如果你正在录音,你可能有一个坚实的磁盘击中。 我通过在/ etc / fstab中closures一段时间来解决这个问题。

你可以做的事情来了解系统中发生的事情是运行vmstat。 一个简单的vmstate 1 20你会看到一个select,你可以看到在CPU吃什么。

你可以用星号做的另一件事是通过在modules.conf中添加“noload =>”行来删除你不需要的模块。 通常有很多。 你只需要花一些时间来了解你所使用和不使用的模块是否在启动时自动加载。

还有一件事要考虑的是转码。 如果您使用G.729A编码解码器接听电话,而您的软电话/桌面电话使用G.711u,那么您将遇到性能问题,因为它必须对这些编码解码器进行编码转换,并且不能仅预编码包2包桥接。

我发现穆宁有助于发现瓶颈。 当graphics不像其他graphics那样缩放时,您可以轻松地确定限制。