FreeBSD + Kqueue/Poll + Libevent

urri nginx-forum на nginx.us
Пт Авг 19 11:44:26 UTC 2011


Alexandr Gomoliako Wrote:
-------------------------------------------------------
> Т.е. сервер ожидает данные, когда не
должен. Наверное где-то при
> обработке запроса что-то посчитало,
что надо больше данных для
> продолжения.
> Убедитесь, что правильно парсите
запрос. Создавайте подробные
> дебаг-логи, записывайте ктрейс
параллельно.

Сервер ожидает данные когда должен,
Libevent принимает подключение от Nginx,
отправляет сокет в Kqueue ожидать
появления данных для чтения, ведь Nginx
должен прислать GET запрос.
До парсинга запроса дело еще не дошло,
Libevent ждет когда Kqueue вернет сокет и с
него можно будет считать данные и
передать выше на обработку, но Kqueue не
возвращает сокет 60 секунд, пока Nginx не
закроет соединение.

> > Переключение бэкенд сервера с
> > использования Kqueue на Poll решает
> 
> Сомнительно.

Серьезно, лишь один дополнительный
вызов и проблема исчезает.
event_config_avoid_method(cfg, "kqueue");
А в логе libevent сообщает что использует
poll.

> Попробуйте libev, у него есть
> libevent-совместимый API.

Я использую http функции из libevent, которых
нет в libev.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,213985,213997#msg-213997



Подробная информация о списке рассылки nginx-ru