Проблема с keepalive

Alexander Sabourenkov screwdriver at lxnt.info
Fri May 15 19:06:24 MSD 2009


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

Ситуация:

nginx-0.7.57 FreeBSD 7.2-RELEASE amd64 (E5410 at 2.33GHz 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






More information about the nginx-ru mailing list