ПРОЕКТЫ 


  АРХИВ 


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]

Re: FreeBSD + Kqueue/Poll + Libevent



Alexandr Gomoliako Wrote:
> Нет, это же вы писали вроде, что nginx
закрывает соединение while
> reading response header. А это значит, что запрос
уже давным давно
> отправлен и nginx уже ждет ответа.

Именно так, nginx отправил запрос, это я
проверял снифером, и ждет ответа.

> Скорее всего этот запрос уже даже
прочитан в буфер вашим сервером, но
> где-то у вас ошибка, что ему кажется,
что нужно больше данных и он
> опять ждет.
> Но раз вы используете http функции libevent,
то ошибка наверное в них.

Нет, запрос принят ОС на транспортном
уровне, снифер это подтверждает, но
данные не поступили на прикладной
уровень, где libevent будет парсить http
запрос. Я логирую вызовы libevent,
конкретно вызов kq_dispatch, в котором libevent
получает от Kqueue сокеты с которых можно
считать данные. И Kqueue не возращает в
libevent эти проблемные сокеты пока nginx не
закроет соединение, а возвращает как
только соединение закрывается, далее
libevent считывает данные и начинает
парсить http.

Собственно мой вопрос был: почему Kqueue
может не возвращать сокет приложению
для чтения данных, хотя известно что
данные ОС для данного соединения уже
получила.

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

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.