ПРОЕКТЫ 


  АРХИВ 


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



> > На сервере с nginx наблюдается следующие проблемы:
> > - скорость отдачи файлов предельно низкая (1-4 Кб/с)
> > - умирают воркеры, в статистике висят тысячи "активных" соединений
> 
> Что показывает
> 
> netstat -an | grep ESTAB | wc -l

Сейчас показывает уже 1000.. число постепенно увеличивается. Но столько 
реальных клиентов точно нет!

> Вероятно все эти тысячи - честные клиентские соединения.
> 
> > Вот лог ошибок сразу после запуска с включенным 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 - это много, за исключением очень 
> специфичных задач.  Таким количеством воркеров вы гарантировано 
> загоните диски в случайное чтение, и не стоит удивляться 
> результату.

Жесткий диск под файлы всего один. gstat показывает следующее:

dT: 1.001s  w: 1.000s
 L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w   %busy Name
    0      0      0      0    0.0      0      0    0.0    0.0| ad6
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1
    9     75     75   6617   95.0      0      0    0.0   98.6| ad10
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1a
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1b
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1c
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1d
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1e
    0      0      0      0    0.0      0      0    0.0    0.0| ad6s1f
    9     75     75   6617   95.0      0      0    0.0   98.6| ad10s1
    0      0      0      0    0.0      0      0    0.0    0.0| ad10s1c
    9     75     75   6617   95.0      0      0    0.0   98.6| ad10s1d

ad10 - диск для хранения файлов, нагрузка пляшет от 98 до 101 процента.


P.S. Рядом стоит практически такой же сервер, тоже один диск для хранения 
файлов, но там система 32-битная.
На нем все работает вроде бы нормально, файлы отдаются значительно быстрее, 
хотя нагрузка должна быть больше. Настройки у nginx-ов специально сделал 
одинаковые, но разница в работе - огромная.





 




Copyright © Lexa Software, 1996-2009.