Re: Не полностью отдается файл клиенту
Maxim Dounin
mdounin на mdounin.ru
Пт Июн 2 11:14:31 UTC 2017
Hello!
On Fri, Jun 02, 2017 at 03:06:08AM -0400, ingtar wrote:
> Добрый день!
> Столкнулся с непонятной проблемой. Имеется сервер для раздачи файлов
> клиентам. При большом кол-ве запросов иногда начинают происходить следующие
> вещи на стороне клиента - скачиваемый файл (через curl) отдается меньшего
> размера но ответ 200
> В утилите siege при 100 конкурентных пользователях выглядит так:
>
> HTTP/1.1 200 26.85 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 27.62 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 28.38 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 29.20 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 29.96 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 30.79 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 31.54 secs: 13925686 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 91.80 secs: 11313152 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 91.82 secs: 249483 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 91.84 secs: 270971 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 91.86 secs: 257541 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 91.88 secs: 265599 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
> HTTP/1.1 200 91.89 secs: 262913 bytes ==> GET
> /test/212879312926726118532324622460834138521.xml
>
> Как видно из времени ответа - он начинает держать клиента и потом закрывает
> коннект с 200 кодом.
> Дебаг лог мне не помог, могу его приложить но он очень большой и найти
> именно проблемный коннект не получилось
Для начала отмечу, что 200 - это код ответа, который отправляется
клиенту в самом начале, вместе с заголовками ответа. Любые
ошибки, которые происходят после этого, на код ответа не влияют.
Чтобы узнать, были они или нет, нужно смотреть в лог ошибок.
Судя по цифрам, соединение было разорвано в процессе передачи тела
ответа, видимо - по таймауту, клиентом или nginx'ом. Из-за чего
такое происходит - сложно сказать, возможно вы просто упрёрлись в
сеть.
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru