ПРОЕКТЫ 


  АРХИВ 


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: Отловить момент, когда за качка завершена



On Thu, 9 Feb 2006, AleXXX V. NovikoFF wrote:

Вообще-то 512000 - 500K/s.

это да, я знаю, я эксперементировал на скоростях в 5 кб, 500 - это уже
из рабочего файла взято

http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#limit_rate :
Чем меньше заданная скорость, тем точнее работает ограничение.

Ограничение сейчас работает так: nginx передаёт в ядро данные.
Если ядерный TCP буфер небольшой, например, 64K, то туда запишется
только 64K. После этого nginx вычисляет задержку в миллисекундах:

sent * 1000 / limit_rate
64000 * 1000 / 512000 = 125ms, в течении 125ms nginx не будет ничего
передавать по этому соединению.


у меня буфер стоит 128к , а скорость нужно будет резать по 16 кб в
секунду.... исходя из этих рассчетов....ожидание составит ~7000 мс...!

Если limit_rate будет 16K, то должно работать хорошо. Если используется
ограничение, то nginx пытается передать в ядро столько, сколько указано
в limit_rate, то есть, в данном случае, будет передано 16К, они легко уйдут
в ядерный TCP буфер (128К) и вычислится таймаут: 16*1024*1000/16*1024=1000ms
или одна секунда.

В общем, формула такова, что, чем меньше можно записать в ядро за раз,
и чем больше limit_rate, тем она менее точная.


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



 




Copyright © Lexa Software, 1996-2009.