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