On Tue, Apr 24, 2007 at 02:33:12AM +0400, Igor Sysoev wrote:
> On Tue, Apr 24, 2007 at 02:24:49AM +0400, Igor Sysoev wrote:
>
> > On Mon, Apr 23, 2007 at 08:16:12PM +0300, Александр Ворона wrote:
> >
> > > Igor Sysoev пишет:
> > > >On Mon, Apr 23, 2007 at 07:15:17PM +0300, Александр Ворона wrote:
> > > >
> > > >>Igor Sysoev пишет:
> > > >>
> > > >>>А если поставить "limit_rate 1M" ? В этом случае nginx сам больше 1M
> > > >>>за раз передавать не будет..
> > > >>но он же и будет лимитировать скорость в 1М :)
> > > >>А проблема имеет место только в случае когда отдача по сети быстрее чем
> > > >>диск - nonblock не даёт ничего тогда
> > > >
> > > >Ну, можно поставить 10M.
> > >
> > > Чистое ядро 64bit, чистый nginx, limit_rate 10М, отдача 4G файла с диска
> > > по 1G линку.
> > > Наблюдаются замирания закачки после тех моментов, когда sendfile выслал
> > > ровно столько сколько его запросили.
> > > также проблему длинных sendfile не решило :)
> > > sendfile(11, 14, [1647065810], 187942190) = 187942190
> > > epoll_wait(13, {}, 512, 17924) = 0
> > > sendfile(11, 14, [1835008000], 220200960) = 220200960
> > > epoll_wait(13, {}, 512, 21001) = 0
> > > sendfile(11, 14, [2055208960], 251658240) = 251658240
> > >
> > > Отдача естественно рывками идёт. Средняя скорость в итоге 9.41М
> >
> > Можно попробовать прилагаемый патч. Он ограничивает размер передаваемых
> > данных за один раз 128K без ограничения скорости.
> >
> > Настраивается в src/os/unix/ngx_linux_init.c
> >
> > off_t ngx_linux_sendfile_limit = 128 * 1024;
0.5.18.2 откатить, 0.5.18.3 накатить.
--
Игорь Сысоев
http://sysoev.ru