У меня есть сервер Asterisk, который выполняет автоматические вызовы, и я замечаю необъяснимую высокую нагрузку на него. На сервере работает только Asterisk. База данных и другие вспомогательные приложения работают на другом компьютере.
Что может быть причиной такой высокой нагрузки?
Если нагрузка становится слишком высокой в течение слишком долгого времени (максимум 8), происходит снижение количества вызовов и общее отсутствие ответа.
Аппаратное обеспечение - это 8-ядерный Intel Xeon E3-1230 V2 с тактовой частотой 3,30 ГГц и 16 ГБ оперативной памяти.
Я читал другие сообщения о подобных проблемах, поэтому я размещу в них всю запрошенную информацию.
Ниже приведены результаты инструментов мониторинга, которые я использовал. В настоящее время их система обслуживает около 200 каналов.
Он не масштабируется линейно, на 400 каналах нагрузка достигает 8, и оттуда дела идут вниз.
"ps auxf" ничего не показывает в состоянии D.
top - 10:50:28 up 7 days, 23:20, 3 users, load average: 2.16, 2.44, 1.93
Tasks: 341 total, 1 running, 340 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.3%us, 5.9%sy, 0.0%ni, 89.4%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 16303732k total, 7179980k used, 9123752k free, 264836k buffers
Swap: 8224760k total, 0k used, 8224760k free, 5759716k cached
2512 root 20 0 4744m 173m 46m S 50.8 1.1 396:55.01 asterisk
Типичный iostat -x. sda и sdb находятся в raid 1, а sdc - это ssd, на котором хранятся некоторые звуковые файлы, которые используются очень часто.
avg-cpu: %user %nice %system %iowait %steal %idle
4.30 0.00 5.94 0.38 0.00 89.38
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 6.00 0.00 9.00 0.00 112.00 12.44 0.04 4.33 3.67 3.30
sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdb 0.00 7.00 0.00 8.00 0.00 112.00 14.00 0.04 5.25 4.62 3.70
md127 0.00 0.00 0.00 15.00 0.00 112.00 7.47 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 14.00 0.00 112.00 8.00 0.05 3.50 2.64 3.70
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
cat / proc / interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 127 0 0 0 0 0 0 0 IO-APIC-edge timer
1: 2 0 0 0 0 0 0 0 IO-APIC-edge i8042
3: 2 0 0 0 0 0 0 0 IO-APIC-edge
4: 2 0 0 0 0 0 0 0 IO-APIC-edge
8: 1 0 0 0 0 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
10: 2 0 0 0 0 0 0 0 IO-APIC-edge
12: 4 0 0 0 0 0 0 0 IO-APIC-edge i8042
16: 59 0 0 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1
23: 97 0 0 0 0 0 0 40 IO-APIC-fasteoi ehci_hcd:usb2
24: 2298 0 0 0 0 0 0 0 HPET_MSI-edge hpet2
25: 0 0 0 0 0 0 0 0 HPET_MSI-edge hpet3
26: 0 0 0 0 0 0 0 0 HPET_MSI-edge hpet4
27: 0 0 0 0 0 0 0 0 HPET_MSI-edge hpet5
28: 0 0 0 0 0 0 0 0 HPET_MSI-edge hpet6
29: 412442 0 0 36 1175680 0 0 208 PCI-MSI-edge ahci
30: 74 335176384 0 0 0 0 0 0 PCI-MSI-edge eth0
31: 5 10 344792 0 0 0 0 0 PCI-MSI-edge eth1-rx-0
32: 0 0 0 0 0 0 0 0 PCI-MSI-edge eth1-tx-0
33: 3 0 0 0 0 0 0 0 PCI-MSI-edge eth1
NMI: 7784 14329 4689 5198 7033 7387 6069 6332 Non-maskable interrupts
LOC: 46833697 44931615 30462128 37088906 47922986 44201942 27616867 37813275 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 7784 14329 4689 5198 7033 7387 6069 6332 Performance monitoring interrupts
IWI: 0 0 0 0 0 0 0 0 IRQ work interrupts
RES: 897464 372249 589429 570768 646428 605601 478042 484381 Rescheduling interrupts
CAL: 92 292 281 289 267 292 288 291 Function call interrupts
TLB: 206630086 265955778 173872460 156528749 143771724 221909392 129664286 115580760 TLB shootdowns
TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 2300 2300 2300 2300 2300 2300 2300 2300 Machine check polls
ERR: 0
MIS: 0
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
0 0 0 9103556 265224 5776272 0 0 1 1 2 8 0 1 99 0 0
0 0 0 9103356 265224 5776268 0 0 0 24 101813 25156 5 9 86 0 0
1 0 0 9103224 265224 5776324 0 0 0 2 139955 25205 5 12 83 0 0
3 0 0 9103968 265224 5776280 0 0 0 54 102550 24442 5 9 85 1 0
2 0 0 9103084 265224 5776304 0 0 0 0 84384 22729 3 7 90 0 0
2 0 0 9102116 265224 5776412 0 0 0 0 84072 24705 6 8 87 0 0
1 0 0 9103432 265224 5776328 0 0 0 0 108438 24144 5 9 86 0 0
0 0 0 9102924 265224 5776340 0 0 0 2 41961 23168 3 5 92 0 0
0 0 0 9102608 265224 5776364 0 0 0 90 76298 26135 5 7 87 1 0
2 0 0 9078068 265224 5776444 0 0 0 0 83315 24891 5 8 87 0 0
0 0 0 9103344 265224 5776436 0 0 0 0 67256 26539 6 7 87 0 0
1 0 0 9094300 265224 5776444 0 0 0 0 54944 24834 3 6 91 0 0
0 0 0 9103352 265224 5776460 0 0 0 2 92988 26388 5 9 86 0 0
2 0 0 9103592 265224 5776440 0 0 0 46 76231 27186 5 7 87 1 0
1 0 0 9103744 265224 5776500 0 0 0 0 67153 26006 5 7 88 0 0
3 0 0 9103056 265224 5776520 0 0 0 76 86165 26895 5 8 87 0 0
1 0 0 9094384 265224 5776568 0 0 0 84 59498 26179 4 6 90 0 0
1 0 0 9088632 265224 5776556 0 0 0 0 103184 27236 6 9 85 0 0
1 0 0 9102532 265224 5776608 0 0 0 40 94010 27663 6 9 85 0 0
1 0 0 9091052 265224 5776648 0 0 0 0 93813 26675 9 9 82 0 0
mpstat 1
11:05:18 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
11:05:19 AM all 8.22 0.00 11.88 0.00 0.00 0.63 0.00 0.00 79.27
11:05:20 AM all 3.05 0.00 4.96 0.00 0.00 0.38 0.00 0.00 91.60
11:05:21 AM all 5.64 0.00 7.27 0.63 0.00 0.38 0.00 0.00 86.09
11:05:22 AM all 5.44 0.00 6.96 0.00 0.00 0.25 0.00 0.00 87.34
11:05:23 AM all 3.76 0.00 7.14 0.00 0.00 0.25 0.00 0.00 88.85
11:05:24 AM all 4.80 0.00 9.86 0.00 0.00 0.51 0.00 0.00 84.83
11:05:25 AM all 3.80 0.00 5.58 0.00 0.00 0.38 0.00 0.00 90.24
11:05:26 AM all 6.58 0.00 7.72 0.51 0.00 0.51 0.00 0.00 84.68
11:05:27 AM all 6.67 0.00 8.43 0.00 0.00 0.50 0.00 0.00 84.40
11:05:28 AM all 4.32 0.00 5.97 0.00 0.00 0.25 0.00 0.00 89.45
11:05:29 AM all 5.04 0.00 7.06 0.00 0.00 0.50 0.00 0.00 87.39
11:05:30 AM all 3.93 0.00 6.34 0.13 0.00 0.51 0.00 0.00 89.10
11:05:31 AM all 4.07 0.00 5.60 0.38 0.00 0.25 0.00 0.00 89.69
11:05:32 AM all 7.08 0.00 9.48 0.00 0.00 0.51 0.00 0.00 82.93
11:05:33 AM all 4.19 0.00 8.51 0.00 0.00 0.51 0.00 0.00 86.79
11:05:34 AM all 2.67 0.00 4.45 0.00 0.00 0.25 0.00 0.00 92.63
Может, уже поздно на это отвечать, а может быть, причина не та, что в моем случае.
Но я также заметил такую высокую нагрузку на ЦП при обновлении моей звездочки 1.8 до звездочки 11.5 (в Fedora 14 до Fedora 20), но сохранил свой старый файл конфигурации! В asterisk.conf строка:
; console = да; Запускать как консоль (аналогично -c при запуске).
не был прокомментирован точкой с запятой, как только строка была прокомментирована и звездочка перезапущена, ЦП вернется к нормальной работе !!!!
Кажется, у вас довольно много переключений контекста и прерываний. Также, если вы посмотрите на нагрузку 2 и рабочую очередь, я думаю, что сценарий может быть вызван быстрыми всплесками потоков, которые очень быстро завершают свою работу, поэтому они не проводят много времени в ЦП, но они увеличивают нагрузку .
P.S. Прошу прощения за мой английский.
Вы можете не увидеть все процессы с помощью простых ps auxf
, потому что с этими параметрами ps
прячется потоки многопоточных процессов. Попробуйте использовать ps -eLo pid,stat,comm
, это покажет все потоки, в которых некоторые потоки могут иметь R
или D
состояния. И средняя нагрузка среднее количество R
+ D
theads (или задачи, в терминологии Linux) на интервал выборки (который может быть 100 раз в секунду).
Единственное, на что Asterisk тратит процессорное время, - это перекодирование при смене кодеков (не в вашем случае, а когда телефоны ALAW / ULAW, а магистраль - G.729), при проведении конференций и микшировании аудиоканалов в один, MusicOnHold и т. Д. Попробуйте перекодировать ваши звуковые файлы в ALAW / ULAW. Если вы записываете звонки, попробуйте записать их в * LAW (на RAM-диск) и перекодировать в MP3 или какое-либо сетевое хранилище в нерабочее время. Если у вас есть голосовая магистраль, отличная от SIP, это также может иметь значение.
Этот ЦП перегружен для такого количества вызовов. Проверять, выписываться Размеры звездочки и вы увидите, что можете выполнять 1000 одновременных вызовов с еще худшим оборудованием.