количество workerов, сonnectionов, keep-alive и прочие -- как надо?

Igor Sysoev is at rambler-co.ru
Wed Aug 16 16:24:47 MSD 2006


On Wed, 16 Aug 2006, Alexei Korobkin wrote:

> Dear All,
>
> Помогите разобраться новичку, пожалуйста.
>
> Связка из двух серверов, frontend+backend, два соляриса sparc 9.
> На бэкенде Апач 1.3.37, на фронтенде всегда был Sun Proxy Server.

Sun Proxy Server это -
http://www.sun.com/software/products/web_proxy/home_web_proxy.xml
?

> Под влиянием отзывов про nginx захотелось его поставить да проверить, 
> поставил со всеми настройками по умолчанию, как на 
> http://blog.kovyrin.net/2006/05/18/nginx-as-reverse-proxy/, только весь 
> контент на Апаче, nginx ничего с локального диска не отдает.
>
> На фронтенде stub_status показывает нагрузку ~500 реквестов в секунду. Так 
> оно примерно и есть.
>
> Так вот, если worker_processes делать много и worker_connections много (до 
> 32*1024), мы получаем тормоза при работе, и сообщения в лог сыпятся
> upstream timed out (145: Connection timed out) while connecting to upstream 
> ...
> а потом вообще серии
> accept() failed (24: Too many open files) while accepting new connection on 
> 0.0.0.0:80
>
> Если же workers и connections ставить немного (от 2*128), получаем в лог
> 128 worker_connections is not enough while connecting to upstream
> и опять же сайт отдается медленно.
>
> Что самое интересное, независимо от количества worker_processes и connections 
> количество открытых соединений между Апачем и nginx-ом дорастает до 2000. В 
> то время как Sun Proxy всегда держит не более 300 и не тормозит.

Если Sun Proxy Server кэширует, то дело в этом.
nginx не поддерживает кэширования.

Настаривать нужно примерно так:

worker_processes  2;

events {
    worker_connections  10240;
}

Ну и увеличить число дескрипторов на процесс.
А статику отдавать локально с диска, а не проксировать её на бэкенд.

> Эту ситуацию надо специально отлаживать, или я просто что-то неправильно 
> накрутил?
>
> Последний рабочий конфиг вот, я там пробовал всякие параметры менять, не 
> помогает.
>
> =========Beginning of the citation==============
> worker_processes  2;
>
>
> events {
>   worker_connections  128;
> }
>
>
> http {
>   include       conf/mime.types;
>   default_type  application/octet-stream;
>
>   sendfile        on;
>
>   keepalive_timeout 60;
>   reset_timedout_connection  on;
>
>   tcp_nopush     on;
>   tcp_nodelay    on;
>
>   gzip on;
>   gzip_min_length  1100;
>   gzip_buffers     4 8k;
>   gzip_types       text/plain;
>
>   client_header_buffer_size    1k;
>   large_client_header_buffers  4 4k;
>
>   output_buffers   1 32k;
>   postpone_output 1460;
>
>   client_header_timeout  3m;
>   client_body_timeout    3m;
>   send_timeout           3m;
>
>   client_body_temp_path       /usr/local/nginx/logs/client_body_temp;
>   proxy_temp_path             /usr/local/nginx/logs/proxy_temp_path;
>
>
>   server {
>       listen       80;
>
>       location /nginx-status {
>           stub_status on;
>           access_log   off;
>           allow user1.domain.com;
>           deny all;
>       }
>
>       location / {
>           root html;
>           proxy_pass http://backend;
>           proxy_redirect off;
>
>           proxy_set_header   Host    $http_host;
>           proxy_set_header   X-Real-IP        $remote_addr;
>
>           client_max_body_size       10m;
>           client_body_buffer_size    128k;
>
>           proxy_connect_timeout      90;
>           proxy_send_timeout         90;
>           proxy_read_timeout         90;
>
>           proxy_buffer_size          4k;
>           proxy_buffers              4 32k;
>           proxy_busy_buffers_size    64k;
>           proxy_temp_file_write_size 64k;
>
>
>      }
>   }
>   upstream  backend  {
>               server www.domain.com;
>   }
> }
> =========The end of the citation================
>
>
> --
> With best regards, Alexei Korobkin. 
>
>
>

Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list