Оптимизация работы nginx.Проблема с новыми соединениями

unclead nginx-forum на nginx.us
Ср Окт 20 08:16:29 MSD 2010


Коллеги, нужна помощь.

Сам по роду деятельности не
администратор, работаю в
сопровождение, но т.к. занимался данным
проектом отдуваться приходиться мне.

Есть сервер 8 ядер по 2Ghz 4 GB оперативной
памяти, 2 гигабитных сетевки.
На сервере работает nginx для
проксирования запросов.
Также работает fast-cgi php на котором
крутиться один простой скрипт.

Ничем кроме проксирования сервер не
занимается.

В среднем через сервер проходит 300-500
запросов в секунду.

В свое время на сервер было зарулено
много трафика(порядка 120-200 Мбит/сек) и
сервер нормально справлялся с
нагрузкой.
Запросы по своей сути были
быстрыми(отдача статики)

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

И начались проблемы.

Вроде при малом количетсве активных
конектов по sockstat
sockets: used 3043
TCP: inuse 6373 orphan 3462 tw 2466 alloc 6374 mem 36350

новые соединения к серверу либо
отваливаются по тайм-ауту либо
соединяются очень долго.

Память и процессор при это практически
не используется.

Конфиг sysctl
sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 8192 131072 33554432
net.ipv4.tcp_wmem = 8192 131072 33554432
net.ipv4.tcp_max_orphans = 512384
net.ipv4.tcp_sack = 1
net.ipv4.tcp_mem = 101152 129536 196304
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 10
net.ipv4.tcp_keepalive_intvl = 1
net.ipv4.tcp_keepalive_probes = 1
net.core.netdev_max_backlog = 3000
net.core.somaxconn = 65536
net.ipv4.tcp_timestamps = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 65536
net.ipv4.tcp_synack_retries = 5
fs.file-max = 1524288
net.core.rmem_default = 201250
net.core.wmem_default = 201250
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_max_tw_buckets = 1440000


конфиг nginx

user nginx nginx;
worker_processes 8;
worker_rlimit_nofile 65536;

#
#error_log /var/log/nginx/error_log info;

events {
        worker_connections  65536;
        use epoll;
}

...

        client_header_timeout   10m;
        client_body_timeout     10m;
        send_timeout            10;

        connection_pool_size            256;
        client_header_buffer_size       1k;
        large_client_header_buffers     4 2k;
        request_pool_size               4k;

        gzip on;
        gzip_min_length 1100;
        gzip_buffers    4 8k;
        gzip_types      text/plain;

        output_buffers  1 32k;
        postpone_output 1460;

        sendfile        on;
#        tcp_nopush      on;
        tcp_nodelay     on;

        ignore_invalid_headers  off;

#--- begin --------------------------
        proxy_buffering off;
        proxy_ignore_client_abort off;
        proxy_max_temp_file_size 0;

        keepalive_timeout 10 10;
        reset_timedout_connection on;
        proxy_buffer_size 4k;

        proxy_read_timeout 10s;
        proxy_send_timeout 10s;

#--- end ------------------------------


Вопрос: хочется понять в какую сторону
копать. Что может ограничивать
соединения.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,142560,142560#msg-142560




Подробная информация о списке рассылки nginx-ru