странности в работе nginx

Alexey Bestciokov proforg at maloletka.ru
Sun Apr 24 01:19:18 MSD 2005


Игорь !
По моему я уже это спрашивал, но в прошлый раз так и не разобрались
nginx после -HUP начинает странно себя вести 
часть старых процессов резкро увеличивают количество используемого процессорного времени 
в данном выводе это PID 6733 и 6745:

root at udaff /var/log/nginx>ps ax -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'
  PID  PPID USER     %CPU   VSZ WCHAN  COMMAND
12519     1 root      0.0  4252 rt_sig nginx: master process /usr/local/sbin/nginx
12521 12519 www-data  0.6  9140 -      nginx: worker process is shutting down
17338 12519 www-data  0.7  8988 -      nginx: worker process is shutting down
20458 12519 www-data  0.7  8728 -      nginx: worker process is shutting down
20482 12519 www-data  0.7  6956 -      nginx: worker process is shutting down
 6733 12519 www-data 13.7  7916 -      nginx: worker process is shutting down
 6745 12519 www-data 13.2  7612 -      nginx: worker process is shutting down
 6856 12519 www-data  0.8  8172 -      nginx: worker process is shutting down
16432 12519 www-data  0.5  7932 -      nginx: worker process is shutting down
18980 12519 www-data  0.9  8032 sync_b nginx: worker process
18981 12519 www-data  0.9  7928 sync_p nginx: worker process
18982 12519 www-data  0.9  7756 sync_p nginx: worker process
18983 12519 www-data  0.9  7896 sync_p nginx: worker process
18984 12519 www-data  1.0  8136 sync_p nginx: worker process
18985 12519 www-data  0.9  7856 sync_p nginx: worker process
18986 12519 www-data  1.0  8092 sync_p nginx: worker process
18987 12519 www-data  1.0  8216 sync_b nginx: worker process
22522 32078 root      0.0  1628 -      grep -E (nginx|PID)

strace показывает 
блоки повторяющщихся строк 
epoll_wait(195, {{EPOLLIN, {u32=3084277592, u64=3084277592}}}, 8192, 48197) = 1
gettimeofday({1114260172, 940343}, NULL) = 0 

которые время от времени меняются блоками строк 
epoll_wait(195, {{EPOLLIN, {u32=3084277672, u64=3084277672}}, {EPOLLERR|0x807a020, {u32=134717480, u64=28969689129000}}}, 8192, 48197) = 2
gettimeofday({1114260172, 940615}, NULL) = 0

полный вывод strace в течении минуты - http://maloletka.ru/dead_nginx.strace.bz2 (630 Кб)
со временем они конечно умирают, не не сразу и сервер грузят весьма заметно.
nginx 0.1.12+, linux 2.6.3+ SMP
в конфиге nginx прописано: debug_points  abort;

И, в последнее время, появилась ещё одна особенность.
судя по выводу stub_status резко возрасло количество Active connections
если раньше оно было в пределах 2-3K, то в сейчас возрасло до 8K
что странно, т.к. нагрузка на сервер, судя по трафику, увеличилась процентов на 10, не больше
более того, как показывает netstat коннектов к серверу на 80й порт практически в 2 раза меньше.
по графику который строится на основе вывода stub_status ( http://maloletka.ru/mrtg/nginx.status.html )
видно, что после перезапуска nginx какое то время количество Active connections остается в разумных рамках, 
после чего скачкообразно возрастает. Оно и бог бы с ним, но nginx начинает значительно медленне отвечать на запросы - 
тотже stub_status отдается по нескольку секунд. Апач запущщеный на этом же сервере при этом отдает контент без задержек.
в какойто степени это вылечилось увеличением количества воркеров - 8 вместо двух, но видимо дело в чём то другом.

Как то всё весьма путанно получилось, но надеюсь суть более или менее
понятна :)

Алексей Бещёков.
proforg at maloletka.ru






More information about the nginx-ru mailing list