ПРОЕКТЫ 


  АРХИВ 


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: Умирают воркеры



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'е где-то 
валяется.  Рекомендую ознакомиться.



 




Copyright © Lexa Software, 1996-2009.