количество 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