ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

client timed out


  • To: nginx-ru@xxxxxxxxx
  • Subject: client timed out
  • From: "Dmitry Frolov" <dm.frolov@xxxxxxxxx>
  • Date: Wed, 14 Feb 2007 20:35:05 +0300
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=p+J0MheSg1JfuOKqRKLAxf5clvQ5+PewyZKO2MTfSPpIaq/+ijuZLjo0tOekmYb972Qnirebv5u4vtD/5PzTW9DKgqNWAKFIJ4jtncv5Cc+h7hHXLURNZVUMh7FP4Y7KTXp7ip4y6n8ss8GYFuH9YGBlAjCvYjGWNYw6dHVoGps=

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

---


 




Copyright © Lexa Software, 1996-2009.