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
|