URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 8025
[ Назад ]

Исходное сообщение
"nginx   open socket #106 left in connection "

Отправлено peering , 30-Мрт-16 17:27 
Прошу помощи, уже не знаю куда копать !

Сервак HP на Debian 8,  12 GB , CPU  CPU E5-2420 6+6, 5 RAID,

Софт Apache2.4 +  nginx/1.6.2  

CMS Битрикс

Канал 1GB

Рекомендации по настройки ядра на соединения делал.

net.core.netdev_max_backlog = 10000
net.core.somaxconn = 262144
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 720000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 7
net.ipv4.tcp_keepalive_intvl = 30
net.core.wmem_max = 33554432
net.core.rmem_max = 33554432
net.core.rmem_default = 8388608
net.core.wmem_default = 4194394
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216


Проблемы с ошибкой "Ожидание сокета  или просто ожидание соединения" происходят при 2000-2500 соединений TIME_WAIT + Established в куче. По портам 80 8080 примерно  около 1000-1200,

В момент падения

Оперативки 2-3 GB free

CPU  3-5   ( для него это норм)

В логах Apache всё ОК.

В nginx:

2016/03/30 17:54:40 [alert] 20206#0: *2874 open socket #106 left in connection 79
2016/03/30 17:54:40 [alert] 20206#0: *2894 open socket #109 left in connection 82
2016/03/30 17:54:40 [alert] 20206#0: *2895 open socket #110 left in connection 83
2016/03/30 17:54:40 [alert] 20206#0: *2900 open socket #111 left in connection 84
2016/03/30 17:54:40 [alert] 20206#0: *2901 open socket #112 left in connection 85
---------------------

netstat   куча соединений

cp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48253  
tcp    CLOSE-WAIT 0      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48592  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:47720  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:47822  
tcp    CLOSE-WAIT 533    0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:49098  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48224  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:47758  
tcp    CLOSE-WAIT 541    0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48951  
tcp    CLOSE-WAIT 0      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48606  
tcp    CLOSE-WAIT 0      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48575  
tcp    ESTAB      693    0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:49277  
tcp    ESTAB      590    0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:49811  
tcp    CLOSE-WAIT 2084   0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48750  
tcp    CLOSE-WAIT 532    0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48866  
tcp    CLOSE-WAIT 0      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48628  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:47791  
tcp    CLOSE-WAIT 0      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48616  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48517  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48516  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:47788  
tcp    CLOSE-WAIT 1      0                                                                  ::ffff:127.0.0.1:http-alt                                                             ::ffff:127.0.0.1:48207  
tcp    ESTAB      311    0                                                    

-------------------------------------
Вот конфиг


user www-data;
error_log /var/log/nginx/error.log ;.
worker_processes 8;
pid /run/nginx.pid;

events {
<------>worker_connections 4000;
<------> multi_accept on;
         use epoll;
}

http {

<------>##
<------># Basic Settings
<------>##

<------>sendfile on;
<------>tcp_nopush on;
<------>tcp_nodelay on;
        reset_timedout_connection on;
........
        keepalive_requests 1000;
<------>keepalive_timeout 30;
        #Razmer vnut tablici
<------>types_hash_max_size 2048;
        # Ne pok vers ngenix
<------>server_tokens off;
        #TIME OUT
        client_header_timeout 20;
        client_body_timeout 20;
        send_timeout 20;

<------># server_names_hash_bucket_size 64;
<------># server_name_in_redirect off;

<------>include /etc/nginx/mime.types;
<------>default_type application/octet-stream;

<------>##
<------># SSL Settings
<------>##
....
<------>ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
<------>ssl_prefer_server_ciphers on;

<------>##
<------># Logging Settings
<------>##

<------>access_log /var/log/nginx/access.log;
<------>error_log /var/log/nginx/error.log;

<------>##
<------># Gzip Settings
<------>##

<------>gzip on;
<------>gzip_disable "msie6";
>       gzip_vary on;

        gzip_min_length 10240;
        #Razr sgatie dlya vsex
<------>gzip_proxied any;
<------>gzip_comp_level 3;
        gzip_buffers 16 8k;
<------>gzip_http_version 1.1;
<------>gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text

------------------------------------

apache

<IfModule mpm_prefork_module>
<------>StartServers<-->         20
<------>MinSpareServers><------> 20
<------>MaxSpareServers><------> 80
<------>MaxRequestWorkers<-----> 1000
<------>MaxConnectionsPerChild   2500
#</IfModule>



Содержание

Сообщения в этом обсуждении
"nginx   open socket #106 left in connection "
Отправлено asavah , 30-Мрт-16 20:22 
spdy/http2 на vhost-ах nginx-а есть?


"nginx   open socket #106 left in connection "
Отправлено peering , 31-Мрт-16 13:03 
> spdy/http2 на vhost-ах nginx-а есть?

Нет


"nginx   open socket #106 left in connection "
Отправлено ACCA , 31-Мрт-16 04:18 
[...]
> Проблемы с ошибкой "Ожидание сокета  или просто ожидание соединения" происходят при
> 2000-2500 соединений TIME_WAIT + Established в куче. По портам 80 8080
> примерно  около 1000-1200,

[...]
> worker_processes 8;
> keepalive_timeout 30;
> events {
> <------>worker_connections 4000;
> <------> multi_accept on;

[...]
> <IfModule mpm_prefork_module>
> <------>StartServers<-->         20
> <------>MinSpareServers><------> 20
> <------>MaxSpareServers><------> 80
> <------>MaxRequestWorkers<-----> 1000

Подозреваю, что у тебя там Nginx как reverse proxy для Apache.

Ты сказал nginx - "сделай 8 процессов по 4000 соединений и держи их по 30 секунд" (32000 всего).

Потом сказал Apache - "каждому соединению дашь по процессу (prefork), но не более 1000 процессов".

Пришло 1000-1200 клиентов, у Apache отвалилась жопа, но ему пох. Nginx в шоке.


"nginx   open socket #106 left in connection "
Отправлено peering , 31-Мрт-16 13:06 
>[оверквотинг удален]
>> <------>MinSpareServers><------> 20
>> <------>MaxSpareServers><------> 80
>> <------>MaxRequestWorkers<-----> 1000
> Подозреваю, что у тебя там Nginx как reverse proxy для Apache.
> Ты сказал nginx - "сделай 8 процессов по 4000 соединений и держи
> их по 30 секунд" (32000 всего).
> Потом сказал Apache - "каждому соединению дашь по процессу (prefork), но не
> более 1000 процессов".
> Пришло 1000-1200 клиентов, у Apache отвалилась жопа, но ему пох. Nginx в
> шоке.

Спасибо за ответ !

MaxRequestWorkers читал нужно ставить 10 * кол-во   ядер  у меня их 6+6 ,  если увеличу до 2500-3000 от этого не нагнётся ?

В nginx получается лучше соединения или вёркеры уменьшить ?


"nginx   open socket #106 left in connection "
Отправлено eRIC , 31-Мрт-16 16:04 
> В nginx получается лучше соединения или вёркеры уменьшить ?

лучше избавьтесь от Apache2 в пользу nginx



"nginx   open socket #106 left in connection "
Отправлено ACCA , 01-Апр-16 17:45 
> В nginx получается лучше соединения или вёркеры уменьшить ?

Лучше перейти на PHP-FPM и выбросить Apache.


"nginx   open socket #106 left in connection "
Отправлено peering , 04-Апр-16 12:52 
>> В nginx получается лучше соединения или вёркеры уменьшить ?
> Лучше перейти на PHP-FPM и выбросить Apache.

PHP-FPM + Nginx или один ?

Причём интересный момент сегодня опять был перегруз,  504 ошибка ,  в логах тоже самое  left in connection 1500, помогло выключение nginx , параметры до 300 вёркеров выкрутил , с натяжкой но всё работало . Я так понимаю проблема происходит во время передачи между web серверами.



"nginx   open socket #106 left in connection "
Отправлено ACCA , 05-Апр-16 18:50 
>  PHP-FPM + Nginx или один ?

PHP-FPM в режиме FastCGI, прикрой сверху Nginx. Он же будет статику отдавать.