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

Igor Sysoev is at rambler-co.ru
Mon Jul 3 11:56:45 MSD 2006


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





More information about the nginx-ru mailing list