Hello!
On Thu, Apr 02, 2009 at 01:52:14PM +0200, Anton Kuznetsov wrote:
> Устал уже повторять фундамент. :)
> Раздаю большие файлы, на больших скоростях. FreeBSD & nginx
> имею такую постоянную болезнь по логам - обрывы связи с кусками примерно по
> 64к:
>
> 81.27.246.58 - - [02/Apr/2009:15:25:52 +0400] GET
> /film/sluzhebnyj.roman.1.avi HTTP/1.0 ZZ 200 88334336
> 92.124.3.154 - - [02/Apr/2009:15:25:54 +0400] GET
> /film/moskva.slezam.ne.verit.avi HTTP/1.0 ZZ 206 63489
> 92.124.3.154 - - [02/Apr/2009:15:25:56 +0400] GET
> /film/moskva.slezam.ne.verit.avi HTTP/1.0 ZZ 206 63779
> 77.51.24.79 - - [02/Apr/2009:15:25:58 +0400] GET
> /multiki/zolotoj.kluchik.avi HTTP/1.0 ZZ 206 63706
> 77.52.122.248 - - [02/Apr/2009:15:26:02 +0400] GET
> /multiki/bolek.i.lolek.zlote.miasto.inkow.avi HTTP/1.1 XX 206 64999
> 194.154.66.131 - - [02/Apr/2009:15:26:04 +0400] GET
> /filmiki/prikljuchenija.elektronika.1.avi HTTP/1.1 ZZ 206 2321244
> 87.247.1.93 - - [02/Apr/2009:15:26:14 +0400] GET
> /filmiki/prikljuchenija.elektronika.2.avi HTTP/1.1 ZZ 206 62239
> 217.117.76.55 - - [02/Apr/2009:15:26:14 +0400] GET
> /film/sledstvie.vedut.znatoki.21.2.avi HTTP/1.1 XX 206 60590
Большинство приведённых строк - 206, т.е. ответ на запрос
диапазона файла. Чтобы понятно был там реально обрыв или это
качалка так попросила - надо логгировать $http_range.
> Хочу чтобы все строчки в логе были как первая - человек взял и скачал фильм
> - ответ 200, размер - почти гиг и все счастливы. Не знаю как оценить
> количество тех кому удается скачать за раз - их записи в логе тонут в
> обрывках по 64к. Я уже установил req_limit как временное решение, до этого
> лог был похож на ужас летящий на крыльях ночи - десятки адресов на хорошей
> скорости выкачивают по 64к в секунду или даже по несколько, т.е. канал им
> позволяет качать хорошо. Бывают куски и побольше, 120к, вот в примере у кого
> 2м, но чаще всего 64к. Это происходит постоянно. Даже когда нагрузка на
> винчестеры, скорость и общее количество коннектов - в разы меньше от
> пиковой.
> В чем проблема? Может буфера в системе/nginx подкрутить надо?
> По-моему когда-то давно такое было и на апаче. :(
>
> Добавлю еще один факт. Недавно удалось побыть таким неудачником у себя дома.
> Взял из лога урл имени 64к - даю wget-у - бац, обрыв! еще раз, еще...
> 03:42:52 (16.27 KB/s) - Read error at byte 33329/1465085952 (No such file or
> directory). Retrying.
> В жизни такого не было. Беру другой урл - качает! Снова пробую первый -
> обрывы! 100% диагностика. На следующий день попробовал - все хорошо.
Если используется limit_req - надо либо накатить патч (пробегал
тут давеча), либо использовать limit_req ... nodelay.
Maxim Dounin