On Wed, Feb 14, 2007 at 08:35:05PM +0300, Dmitry Frolov wrote:
> Думал поставить nginx в качестве акселератора, который бы быстро
> скачивал контент с бэкенда и потом медленно отдавал клиенту.
> На эту тему и тестировал и обнаружилась одна странность.
>
> Если начать скачивать документ, причем документ скачивается nginx'ом с
> бэкенда целиком, а потом закрыть клиентское соединение (прибить wget),
> nginx через некоторое время пишет в лог
>
> 007/02/14 20:19:51 [info] 16608#0: *15 client timed out (110:
> Connection timed out) while sending to client, client: 172.16.7.2,
> server: XXX, URL: "/healthcheck/100k.txt", upstream:
> "http://127.0.0.1:8081/healthcheck/100k.txt", host:
> "172.16.24.22:8888"
>
> Вопрос - а почему не сразу?
>
> Если документ в буфере+файле не поместился, то есть соединение с
> бэкендом не закрыто, то при закрытии клиентского соединения сразу
> пишется:
>
> 2007/02/14 20:18:05 [info] 16608#0: *11 client closed prematurely
> connection, so upstream connection is closed too (104:Connection reset
> by peer) while reading upstream, client: 172.16.7.2, server: XXX, URL:
> "/healthcheck/100mb.txt", upstream:
> "http://127.0.0.1:8081/healthcheck/100mb.txt", host:
> "172.16.24.22:8888"
>
> В первом же случае worker остается занят еще некоторое время, что
> соотвественно может привести к проблемам.
Нужен отладочный лог. Вообще же, очень похоже на проблемы в Линуксе,
когда сообщение о закрытии соединения не попадает в приложение.
--
Игорь Сысоев
http://sysoev.ru