ПРОЕКТЫ 


  АРХИВ 


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: Несколько непонят ностей по nginx



Igor Sysoev пишет:
On Sat, Apr 21, 2007 at 05:44:07PM +0400, Александр Ворона wrote:

Igor Sysoev пишет:
Дело в том, что lighttpd не использует EPOLLET, а nginx - использует.
Когда патч в ядре ограничивает объём передаваемых данных, то происходит
следующее - EPOLLET фиксирует состояние, что буфер свободен, об этом
сообщается приоложению (nginx'у), он делает sendfile. sendfile быстро
передаёт ограниченный объём, буфер по-видимому после этого полностью
свободный и новое событие не приходит.
а как тогда должен отрабатывать nginx, если бы sendfile() действительно был неблокирующим(за что собственно и боремся) и быстро передавал ограниченный обьём?

sendfile должен вернуть, сколько он смог передать. nginx это фиксирует,
выствляет таймаут на передачу и оставляет этот сокет в покое, пока
epoll снова не сообщит об освободившемся месте.


те sendfile() фактически должен сказать : "я пхнул в сокет столько-то и ушёл". nginx _после_ вызова sendfile() выставляет таймаут для сокета, в который sendfile() пхнул данные. И если данные уже успели улететь до постановки таймаута - события не придёт?




 




Copyright © Lexa Software, 1996-2009.