Умирают воркеры
Maxim Dounin
mdounin at mdounin.ru
Mon Mar 2 13:33:26 MSK 2009
Hello!
On Mon, Mar 02, 2009 at 11:44:52AM +0300, Lin wrote:
> > > На сервере с nginx наблюдается следующие проблемы:
> > > - скорость отдачи файлов предельно низкая (1-4 Кб/с)
> > > - умирают воркеры, в статистике висят тысячи "активных" соединений
> >
> > Что показывает
> >
> > netstat -an | grep ESTAB | wc -l
>
> Сейчас показывает уже 1000.. число постепенно увеличивается. Но столько реальных клиентов точно нет!
Факты таковы что соответствующее количество соединений открыто.
[...]
> > Это значит, что 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
SATA диски обычно выдают больше чем 75 операций в секунду на
случайном чтении, хотя и не намного. Ну и цифра 95 ms/r тоже не
блещет, должно быть меньше. Можно попробовать внимательно
посмотреть на диск - почитать smart, поменять на другой и т.п.
> 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
Странно, что при таких буферах и таком количестве соединений
система не ушла в swap. Что показывает top?
> 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-ов специально сделал одинаковые, но разница в работе - огромная.
В первую очредь влияет суммарный объём раздаваемых файлов (в
частности горячей части), и отношение этого объёма к не занятой
приложениями оперативной памяти (т.е. к объёму кеша файловой
системы).
Если на этих машинах нагрузка разная - то говорить о чём-либо без
учёта вышеупомянутых факторов - бессмысленно.
Ну и диски, опять же, бывают *сильно* разными.
Maxim Dounin
p.s. Уменьшайте output_buffers. Вы потребляете памяти существенно
больше чем у вас есть.
More information about the nginx-ru
mailing list