ПРОЕКТЫ 


  АРХИВ 


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: feature request: sendfile management



MZ пишет:
В пн, 22/10/2007 в 10:11 +0400, Igor Sysoev пишет:
On Mon, Oct 22, 2007 at 09:41:23AM +0400, Andrey N. Oktyabrski wrote:

MZ wrote:
man sendfile:
    The flags argument has one possible value: SF_NODISKIO.  This flag
causes any sendfile() call which would block on disk I/O to instead
return EBUSY.  Busy servers may benefit by transferring requests that
would block to a separate I/O worker thread.

может стоит использовать эту фишку ?
если EBUSY, то отдавать самому без sendfile, а иначе пусть ядро отдает ?
ano@shrek:~> uname -sr
SunOS 5.10
ano@shrek:~> man sendfile
...
ssize_t sendfile(int out_fd, int in_fd, off_t  *off,  size_t len);
...
Где тут "The flags argument"?
ман от FreeBSD
sendfile - это вообще не стандратная вещь. Для Линуксе, например,
пришлось сделать специальную обработку 2G+ файлов для sendfile32().
Я понимаю.
Но тормозит ведь! Может и для фри  #ifdef поставить ? Я бы и сам сделал,
но не занимаюсь плотно С - могу накосячить.

простым #ifdef тут наврядли обойтись получится. На одном и том же файле в течение одного запроса sendfile()'ы могут и блокироваться и не блокироваться, например в зависимости от загрузки дисков и/или от скорости канала к клиенту. Можно конечно упростить задачу, и, как только sendfile() заблокировался первый раз - продолжать отдавать файл через read/write. Насколько эта схема будет эффективной - вопрос второй.

Какие ещё могут быть варианты ухода nginx от блокировки на диске, забывая про AIO?



 




Copyright © Lexa Software, 1996-2009.