Re[2]: Умирают воркеры

Lin shaman712 at inbox.ru
Mon Mar 2 11:44:52 MSK 2009


> > На сервере с 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-ов специально сделал одинаковые, но разница в работе - огромная.







More information about the nginx-ru mailing list