Closing connection при медленном скачивании
klimov.d.e at gmail.com
klimov.d.e at gmail.com
Tue Dec 11 11:00:49 UTC 2012
Приветствую!
Столкнулись с такой проблемой.
Есть необходимость отдавать большой файл. Клиент получает по http этот
файл своей системой, в которой установлен лимит на скорость скачивания.
возникла проблема что клиент через некоторое время получает
Closing connection всегда через одно и то же время. Причем это время
зависит от скорости с которой он скачивает.
Начали тестировать и выяснили что воспроизводится на простейшем конфиге
с крайней стабильной версией 1.2.5 и зависит от значения параметра
send_timeout.
server {
send_timeout 15;
location /export/ {
alias /www/export/;
}
}
в export находится bigfile.xml достаточно большой.
Проверяется командой
% curl -vvv -H 'Host:
www.example.ru' http://10.7.17.11/export/yal.xml --limit-rate 60K
> /dev/null
* About to connect() to 10.7.17.11 port 80 (#0)
* Trying 10.7.176.11... % Total % Received % Xferd Average
Speed Time Time Time Current Dload Upload Total Spent
Left Speed 0 0 0 0 0 0 0 0 --:--:--
--:--:-- --:--:-- 0connected
* Connected to 10.7.17.11 (10.7.17.11) port 80 (#0)
> GET /export/bigfile.xml HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0
> OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6 Accept: */*
> Host: www.example.ru
>
< HTTP/1.1 200 OK
< Server: nginx/1.2.5
< Date: Mon, 10 Dec 2012 11:23:13 GMT
< Content-Type: text/plain
< Content-Length: 1036786323
< Last-Modified: Mon, 10 Dec 2012 10:24:03 GMT
< Connection: keep-alive
< Accept-Ranges: bytes
<
{ [data not shown]
0 988M 0 3749k 0 0 60669 0 4:44:49 0:01:03
4:43:46 62197* transfer closed with 1032903274 bytes remaining to read
0 988M 0 3792k 0 0 61360 0 4:41:36 0:01:03 4:40:33
72301* Closing connection #0
curl: (18) transfer closed with 1032903274 bytes remaining to read
т.е. обрывается на 0:01:03
время обрыва каждый раз практически одинаково. Оно увеличивается при
увеличении параметра send_timeout. При значении в 30 секунд обрывается
уже на 0:34:57.
сеть ни причем, воспроизводится также при запуске curl с того же хоста
где nginx.
Похоже на баг в nginx или я что то я делаю не так?
--
Климов Денис.
Подробная информация о списке рассылки nginx-ru