client timed out

Dmitry Frolov dm.frolov at gmail.com
Wed Feb 14 20:35:05 MSK 2007


Hi All,

Думал поставить 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 остается занят еще некоторое время, что
соотвественно может привести к проблемам.

Вот мой конфиг

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  debug;

pid        logs/nginx.pid;

events {
    worker_connections  10;
    use epoll;
}

http {
    include       conf/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] $request '
                      '"$status" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  20;

    #gzip  on;

    server {
        listen       8888;
#       server_name  xxxxx;
        proxy_buffering on;
        proxy_buffers 2000 4k;
        proxy_max_temp_file_size 0;

        proxy_intercept_errors on;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        error_page  404 /404.html;
        location /404.html {
            root html;
        }

        error_page   500 502 503 504 /50x.html;
        location /50x.html {
            root   html;
        }

        location / {
            proxy_pass   http://127.0.0.1:8081;
        }
    }
}

Клиентские соединения имитировались при помощи wget --limit-rate=4k

---


More information about the nginx-ru mailing list