Эта проблема беспокоит меня в течение последних нескольких дней, поскольку я потратил более 40 часов на интенсивное изучение этой проблемы.
Фактически мы используем звездочку 1.4.42, которая, насколько я понимаю, устарела, однако это последняя стабильная версия звездочки, которая работает с нашими вышестоящими поставщиками в отношении факсов (обновление не является вариантом).
Теперь проблема в том, что у нас есть следующий сервер спецификации:
Dell Poweredge 1950 года
Четырехъядерный процессор Xeon 2,5 ГГц E5420
ОЗУ ECC 8 ГБ
4 жестких диска SAS емкостью 73 ГБ, 10 тыс. Об / мин
RAID-контроллер Dell PERC 5 в Raid 10
Centos 5.9 X64
Форматирование диска EXT3
Теперь проблема в том, что у нас очень высокая нагрузка на сервер при 100 одновременных вызовах в asterisk. Я не могу разобраться. У меня есть еще один сервер с аналогичной спецификацией, но его Quad core2duo, raid 1, 2 жестких диска по 250 ГБ 7200 об / мин и 8 ГБ оперативной памяти без ECC, который обрабатывает 200+ одновременных вызовов и составляет около 0,3 нагрузки на сервер.
Я действительно нахожусь в этом и не могу понять.
Я приложил скриншоты лучших результатов и результатов iotop
Снимки экрана показывают низкое использование ЦП, низкое использование памяти и 0% времени ожидания при вводе-выводе диска.
верхняя - http://chostwales.com/images/hosted/Super-load.jpg
iotop - http://chostwales.com/images/hosted/HighDISKIO.jpg
Любая помощь / идеи будут действительно оценены по этому поводу.
Чтобы уточнить, это 100 одновременных вызовов с примерно 1 новым вызовом каждую секунду. (Как упоминалось выше, у меня есть серверы с гораздо меньшими характеристиками, которые делают 10 новых вызовов каждую секунду, и нагрузка практически не меняется)
Чтобы уточнить:
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------
r b 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.
Чтобы получить представление о том, что происходит в вашей системе, вы можете запустить vmstat. Простое vmstate 1 20 даст вам возможность посмотреть, и вы увидите, что «ест» процессор.
Еще одна вещь, которую вы можете сделать с помощью asterisk, - это удалить ненужные модули, добавив строки «noload =>» в modules.conf. Часто их бывает много. Вам просто нужно потратить некоторое время, чтобы узнать, какие модули вы используете, а какие не используете, так как все они загружаются автоматически во время запуска.
Еще одна вещь, которую следует учитывать, - это перекодирование. Если вы принимаете вызовы с использованием кодека G.729A, а ваши программные / настольные телефоны используют G.711u, вы получите снижение производительности, поскольку он должен перекодировать эти кодеки и не может просто предварительно сформировать пакет-2. -пакетный мост.
Я нашел Мунина полезным для выявления узких мест. Вы можете легко определить пределы, когда график не масштабируется, как другие.