Несколько непонятностей по nginx

Igor Sysoev is at rambler-co.ru
Tue Apr 24 02:33:12 MSD 2007


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;

Скорее всего, нужно поправить в ngx_http_write_filter_module.c:

-        ngx_add_timer(c->write, 0);
+        ngx_add_timer(c->write, 1);


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list