Обнаружил интересную ошибку (версия у меня 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