Умирают воркеры
Maxim Dounin
mdounin at mdounin.ru
Mon Mar 2 01:45:00 MSK 2009
Hello!
On Sun, Mar 01, 2009 at 10:18:43PM +0200, shaman wrote:
> Здравствуйте, Maxim.
>
> На сервере с nginx наблюдается следующие проблемы:
> - скорость отдачи файлов предельно низкая (1-4 Кб/с)
> - умирают воркеры, в статистике висят тысячи "активных" соединений
Что показывает
netstat -an | grep ESTAB | wc -l
?
Вероятно все эти тысячи - честные клиентские соединения.
> Вот лог ошибок сразу после запуска с включенным sendfile:
[...]
> 2009/03/01 21:59:19 [crit] 80542#0: *636 connect() to 127.0.0.1:81 failed (54: Connection reset by peer) while connecting to upstream, client: 1.3.50.212, server: server.com, request: "GET /getfile.php?id=4588&access_key=9905ff3057599bbbedf7ba0e0c06b543&t=49aac8da&o=95CA75EF8AFDABBCE09C076530DBEDD394D674EF8AFDABA0FD9C056532C1E58792D576EE94FEC4E2B0C2191C4FDBEECF96CA&name=%D0%93%D0%B0%D1%80%D0%B8%2C%20%D1%82%D1%80%D0%B5%D0%BD%D0%B5%D1%80%20%D0%BF%D0%BE%20%D1%82%D0%B5%D0%BD%D0%BD%D0%B8%D1%81%D1%83_.part7.rar HTTP/1.0", upstream: "http://127.0.0.1:81/getfile.php?id=4588&access_key=9905ff3057599bbbedf7ba0e0c06b543&t=49aac8da&o=95CA75EF8AFDABBCE09C076530DBEDD394D674EF8AFDABA0FD9C056532C1E58792D576EE94FEC4E2B0C2191C4FDBEECF96CA&name=%D0%93%D0%B0%D1%80%D0%B8%2C%20%D1%82%D1%80%D0%B5%D0%BD%D0%B5%D1%80%20%D0%BF%D0%BE%20%D1%82%D0%B5%D0%BD%D0%BD%D0%B8%D1%81%D1%83_.part7.rar", host: "93.84.113.218", referrer: "http://93.84.113.218/"
Не справляется php. Возможно - из-за перегрузки дисковой
подсистемы, см. ниже.
[...]
> Вывод ps -alx | grep ngin (директива sendfile закомментирована) дает следующее:
>
> 1004 46557 980 0 4 0 16384 0 sbwait IW ?? 0:00.00 ftpd: 1.3.54.205: user/wwwadmin: RETR nginx_error_lo
> 0 83026 1 1 20 0 7656 0 pause SWs ?? 0:00.00 nginx: master process /usr/local/sbin/nginx
> 80 83037 83026 3 -4 0 215544 112508 getblk D ?? 0:02.21 nginx: worker process (nginx)
> 80 83040 83026 1 -4 0 302580 140104 getblk D ?? 0:02.19 nginx: worker process (nginx)
> 80 83043 83026 0 -8 0 102900 55372 biord D ?? 0:02.17 nginx: worker process (nginx)
[...]
> При включенной sendfile практически все воркеры висят в состоянии
> biord (что это значит).
Это значит, что nginx упёрт в дисковую подсистему. И при
включённом sendfile, и при выключенном. Смотрите из чего именно
она состоит, как её можно разгрузить и/или ускорить. Начать
рекомендую с внимательного изучения вывода gstat.
Ну и количество шпинделей посчитать, и привести количество
воркеров в соответствие. Ибо 30 - это много, за исключением очень
специфичных задач. Таким количеством воркеров вы гарантировано
загоните диски в случайное чтение, и не стоит удивляться
результату.
> И, наконец, привожу конфиг nginx:
[...]
> output_buffers 32 256k;
32 буфера по 256k - не очень хороший выбор если раздаются большие
файлы. Лучше начать с
output_buffers 1 1m;
и дальше играться размером (не количеством) в разные стороны.
> Помогите, пожалуйста, разобраться, что происходит.
См. выше.
Maxim Dounin
p.s. Где-то в архивах должен быть рассказ Игоря про рамблер кинозал, ну и
видео соответствующего блиц-доклада на последнем highload'е где-то
валяется. Рекомендую ознакомиться.
More information about the nginx-ru
mailing list