Предистория такая - захотелось потестировать nginx а заодно попытаться получьше понять как работает система с ним и где какие узкие места.
Есть машина с http_load которая очень часто дергает страничку на host:nginx и может нагружать его по самое то что нужно. Во время нагрузки на host:nginx такая картина: # mpstat -P ALL 1
19:10:19 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
19:10:20 all 8,25 0,00 9,75 0,00 1,00 14,00 0,00 67,00 17301,98
19:10:20 0 0,99 0,00 0,99 0,00 0,00 0,00 0,00 98,02 991,09
19:10:20 1 0,99 0,00 0,99 0,00 0,00 0,99 0,00 97,03 0,00
19:10:20 2 18,81 0,00 23,76 0,00 0,00 1,98 0,00 54,46 0,00
19:10:20 3 12,87 0,00 13,86 0,00 3,96 51,49 0,00 17,82 16312,87
# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 1992370 0 0 0 IO-APIC-edge timer
1: 2 0 0 0 IO-APIC-edge i8042
6: 3 0 0 0 IO-APIC-edge floppy
8: 1 0 0 0 IO-APIC-edge rtc
9: 0 0 0 0 IO-APIC-level acpi
14: 3077 466 2482 94 IO-APIC-edge ide0
169: 0 0 0 0 IO-APIC-level uhci_hcd:usb3
177: 0 0 0 0 IO-APIC-level uhci_hcd:usb1
185: 0 0 0 0 IO-APIC-level uhci_hcd:usb2
193: 22 131508 0 1893886 IO-APIC-level eth0
NMI: 0 0 0 0
LOC: 1991855 1991854 1991853 1991852
ERR: 0
MIS: 0
#bwm-ng
bwm-ng v0.5 (probing every 0.500s), press 'h' for help
input: /proc/net/dev type: avg (30s)
\ iface Rx Tx Total
===========================================================================
lo: 0.00 P/s 0.00 P/s 0.00 P/s
eth0: 72182.23 P/s 71727.73 P/s 143909.97 P/s
---------------------------------------------------------------------------
total: 72182.23 P/s 71727.73 P/s 143909.97 P/s
# top
top - 19:13:54 up 35 min, 1 user, load average: 1.59, 0.98, 0.42
Tasks: 81 total, 2 running, 79 sleeping, 0 stopped, 0 zombie
Cpu0 : 8.6%us, 11.0%sy, 0.0%ni, 77.1%id, 0.0%wa, 0.0%hi, 3.3%si, 0.0%st
Cpu1 : 7.6%us, 10.0%sy, 0.0%ni, 80.4%id, 0.0%wa, 0.0%hi, 2.0%si, 0.0%st
Cpu2 : 12.4%us, 15.1%sy, 0.0%ni, 71.6%id, 0.0%wa, 0.0%hi, 1.0%si, 0.0%st
Cpu3 : 9.0%us, 10.3%sy, 0.0%ni, 24.3%id, 0.0%wa, 3.7%hi, 52.7%si, 0.0%st
Mem: 6235512k total, 702180k used, 5533332k free, 8272k buffers
Swap: 104312k total, 0k used, 104312k free, 655392k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1708 root 16 0 8052 3944 560 R 66 0.1 1:05.76 nginx
1705 root 16 0 8052 3944 560 S 17 0.1 1:05.75 nginx
1706 root 16 0 8052 3944 560 S 17 0.1 0:56.01 nginx
170 root 15 0 0 0 0 S 0 0.0 0:00.76 pdflush
398 root 10 -5 0 0 0 S 0 0.0 0:02.44 md0_raid1
Не знаю уместно ли но еще есть strace на 1 из дочерних процесов nginx'а:
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
23.52 0.139426 0 297574 write
21.35 0.126514 0 297583 close
14.08 0.083476 0 297573 writev
11.79 0.069878 0 297575 accept
8.16 0.048345 0 297573 recv
7.01 0.041553 0 297805 epoll_wait
6.17 0.036566 0 298013 epoll_ctl
4.37 0.025907 0 297805 gettimeofday
3.55 0.021044 0 297575 ioctl
------ ----------- ----------- --------- --------- ----------------
100.00 0.592709 2679076 total
Если убрать логирование - write() пропадает и обрабатывается на ~25% больше запросов.
На нагрузочной машине показывает ~15085.8 fetches/sec
На nginx 2.6.18-53.1.19.el5_PAE ядро. 2x"Intel(R) Xeon(TM) CPU 3.06GHz", Intel e1000-NAPI По мониторингу я так понимаю что очередь пакетов разбарается 1 процессором(softriq) что наверно не очень хорошо, но c другой стороны на этом процессоре еще %idle 17,82 получается, и возмножно затык не в этом. А если все же там то хочется понять как разнести разбор очереди по разным процессорам, если такое возможно. В общем складывается такое впечатление что можно что-то поднакрутить, без жеских патчей в ядре.
P.S. Так как серьезных знаний по ядру нет, прошу сильно не бить :-)
P.P.S.Еще заметил на 2.6.25 ядре обрабатывается в 2 раза меньше запросов.
Похожие темы
- Форум «классический» вид top (2017)
- Форум Что это значит? (2002)
- Форум получение даных по нагрузкам ядер (2016)
- Форум Почему процессор так сильно нагружен, хотя почти ничего не выполняется? (2010)
- Форум top (2008)
- Форум Я офигел... (2007)
- Форум Давайте делиться коньками? (2012)
- Форум Аналог ZRAM в openbsd (2017)
- Форум average (2008)
- Форум не работает taskset (2012)