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

Alexei Korobkin korobkin at gmail.com
Wed Aug 16 14:13:21 MSD 2006


Dear All,

Помогите разобраться новичку, пожалуйста.

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

Под влиянием отзывов про 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 и не тормозит.

Эту ситуацию надо специально отлаживать, или я просто что-то неправильно накрутил?

Последний рабочий конфиг вот, я там пробовал всякие параметры менять, не помогает.

=========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. 






More information about the nginx-ru mailing list