<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">24 ноября 2013 г., 19:26 пользователь Валентин Бартенев <span dir="ltr"><<a href="mailto:vbart@nginx.com" target="_blank">vbart@nginx.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Sunday 24 November 2013 14:39:59 Gelun, Artem wrote:<br>

> Валентин, спасибо. Видимо, я перепутал с BSD-шным sendfile...<br>
><br>
> Комментарий "он будет зваться ровно столько раз, сколько понадобиться<br>
> для отдачи всего файла" относится, судя по всему, именно к BSD? потому<br>
> что на Linux просто блокируется вызов до получения полного файла и<br>
> всё.<br>
<br>
</div>Нет.  Как уже выше выяснили, он ещё EAGAIN возвращает.<br></blockquote><div><br></div><div>Ну EAGAIN, вроде, остаётся только при недостаточности буфера сокета. А в моём первом вопросе было "<span style="font-family:arial,sans-serif;font-size:13px">при размере файла < размера буфера сокета", соответственно, данных должно быть меньше, чем буфер и EAGAIN возвращаться не должен. Или я опять что-то не так понял? ))</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class="im"><br>
><br>
> Используем небольшой свой модуль, который из имени файла делает, по<br>
> сути, range  и отдаёт ответ с кодом 200. Внутри он вызывает<br>
> ngx_http_output_filter, который занимается всем вводом-выводом, так<br>
> что "в кишки" мы не лезем.<br>
<br>
</div>Там много нюансов, чтобы сломать nginx не обязательно лезть "в кишки".<br>
<div class="im"><br>
<br>
><br>
> Включать AIO - не вариант. Отсутствие RA снижает производительность<br>
> дисков очень значительно (даже при выставлении больших буферов -<br>
> видимо, за счёт RA RAID-контроллера, который тоже отключается) +<br>
> отсутствие sendfile прибавляет почти десяткок процентов system time на<br>
> и без того нагруженном сервере...<br>
<br>
</div>Отсутствие RA?<br>
<div class=""><div class="h5"><br></div></div></blockquote><div>ReadAhead, который отключается при DIRECT_IO, который обязателен для AIO в linux.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class=""><div class="h5">
--<br>
Валентин Бартенев<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></div></blockquote></div><br></div></div>