ПРОЕКТЫ 


  АРХИВ 


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]

Проблема с keepalive



Здравствуйте.

Ситуация:

nginx-0.7.57 FreeBSD 7.2-RELEASE amd64 (E5410@xxxxxxx x2, 8G, em)

~900 запросов в секунду с десятка хостов

При включенных keepalive практически все запросы идут по 10-15 соединениям, время их жизни явным образом не ограничивается. В результате имеем:
 - все запросы обрабатываются одним worker-ом
- этот worker кушает прилично CPU и памяти, причем со временем всё больше и больше, доедает одно ядро до 100% за примерно час.
 - все остальные worker-ы отдыхают.

Подозреваю, что где-то там есть нечто, характеризующееся количеством прошедших запросов по соединению (n), требующее O(n) времени на каждом запросе, O(n) gf и сносимое только при закрытии соединения. Что бы это могло быть?

Даже если бы оно так не текло, проблема повышения времени ответа worker-a, кушающего 100% CPU из-за небольшого количества таких соединений остается.

Кроме костыля, аналогичного апачевскому MaxKeepAliveRequests, что-то ничего не приходит в голову.

С отключенным keepalive полёт нормальный.

Вопрос, собственно, такой: куда копать?

--

./lxnt




 




Copyright © Lexa Software, 1996-2009.