ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: нагрузка одного воркера 99.9% CPU



On Mon, 3 Jul 2006, Alex Kitschkiruk wrote:

Обнаружил интересную ошибку (версия у меня 49), а интересная она в том, что
сложно ее предугажать и невозможно создать условия для повторения...
Машинка новая - оптерон 2х гигагерцовый, памяти - 2 гига. стоит дебиан.
Крутится пока один маленький проект (1500 уников в день). (то есть ресурсов
выше крыши)
nginx_status показывает примерно 60-120 коннектов, и 2-3 запроса в секунду.
все воркеры кушают около 0.0 - 0.1% CPU
Работала система без сбоя примерно неделю, потом я добавил в конфиг
несколько location директив, с поддержкой паролей...
и тут началось...
через некоторое время один из воркеров начинает поедать все процессорное
время.
Заметил интересное, что когда пытался выйти через kill QUIT, то нагрузка
осталась 99.9%, но рапределилась равномерно по всем воркерам. Приходилось
kill INT делать.
Поедание процессора начианется не сразу после перезагрузки, а может через
полчаса, может через 10 часов...
Началась эта свястопляска пару дней назад, поэтому и подозрение на
добавление этих location, вот такого типа они все:

       location ^~ /archiv/ {
           valid_referers  none  server_names  *.server.com/;
           if ($invalid_referer) {
               return   403;     }
           root   /var/www/web1;
           autoindex    on;
           auth_basic "Priwet!";
           auth_basic_user_file /etc/nginx/password_web1;
           limit_rate 100K;
           access_log   /var/logs/nginxx_web1_archiv.log   download;
       }

То есть ничего особенного здесь нет...на другой машинке раньше такая
конструкция без проблем работала
Ошибок в логах никаких нет, компилировал с поддержкой debug. Что можно
сделать чтобы вам конкретнее сказать, где проблема закралась?

В таких случаях можно сделать следующее:

1) запустить strace/ktrace/и тому подобное на десяток секунд,
   вывод прислать мне.

2) запустить screen и подсоединиться к зациклившимся процессам с
   помощью gdb, процессы будут висеть в состоянии STOP.

В таком состоянии nginx'у можно смело посылать -HUP, -USR1 и даже
делать online-upgrade (единственное исключение - при использовании
метода rtsig: там могут быть проблемы).
После этого будем вместе смотреть проблему.


Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.