Есть web-сервер работает на связке NGINX + PHP-FPM. Перешли на https, приняли решение сделать поддержку http2, пришлось поставить новый NGINX. После "nginx restart" в логах "nginx/error.log" валится:
nginx/error.log
2017/07/23 13:48:30 [notice] 3284#3284: signal process started
2017/07/23 13:48:30 [alert] 2892#2892: *33356 open socket #11 left in connection 4
2017/07/23 13:48:30 [alert] 2887#2887: *33398 open socket #44 left in connection 15
2017/07/23 13:48:30 [alert] 2892#2892: *33364 open socket #38 left in connection 23
2017/07/23 13:48:30 [alert] 2884#2884: *33395 open socket #23 left in connection 16
2017/07/23 13:48:30 [alert] 2892#2892: aborting
2017/07/23 13:48:30 [alert] 2887#2887: aborting
2017/07/23 13:48:30 [alert] 2884#2884: aborting
и т.д...
netstat -n -t -o | grep timewait выдает:
tcp 0 0 127.0.0.1:9000 127.0.0.1:38936 TIME_WAIT timewait (3.17/0/0)
tcp 0 0 127.0.0.1:9000 127.0.0.1:40763 TIME_WAIT timewait (48.73/0/0)
tcp 0 0 127.0.0.1:9000 127.0.0.1:37674 TIME_WAIT timewait (0.00/0/0)
tcp 0 0 127.0.0.1:9000 127.0.0.1:37464 TIME_WAIT timewait (0.00/0/0)
и таковых очень много...
Используемые версии ПО:
Ubuntu 14.04.5 LTS
nginx/1.12.1
OpenSSL 1.0.2l
PHP 5.5.9
------------------------------
Из файла конфигурации NGINX:
------------------------------
worker_processes 8;
events {
worker_connections 25000;
multi_accept on;
use epoll;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_max_body_size 30m;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 10;
keepalive_timeout 30 15;
types_hash_max_size 2048;
reset_timedout_connection on;
gzip on;
server_tokens off;
upstream backend {
server 127.0.0.1:9000;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name sitename.com;
ssl_certificate /path/sitename_com.crt;
ssl_certificate_key /path/sitename_com.key;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:100m;
ssl_dhparam /path/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers '...';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/sitenamecab.pem;
resolver ip-adress; #ip-адрес из "resov.conf"
gzip off;
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass backend;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_param HTTP_SCHEME https;
include fastcgi.conf;
}
}
server {
listen 80;
... тут почти тоже самое, что и для listen 443 кроме - нет записей для ssl, gzip on и нет fastcgi_param HTTP_SCHEME https;
}
}
------------------------------
Из файла конфигурации PHP-FPM:
------------------------------
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
listen.backlog = 3000
pm = static
pm.max_children = 2000
pm.max_requests = 3000
------------------------------
До установки новой версии NGINX, со старой (nginx/1.4.6) таких ошибок не было. Сервер работает, сайт открывается, но думаю так оставлять нельзя. В сети о таких проблемах есть информация, но как исправить не понятно. Если убрать из "nginx.conf" секцию "server" с "ssl и http2" и оставить только "server" с "listen 80;" ничего не меняется (естестственно, перезапуская после изменения NGINX). Также ничего не меняется, если уменьшить "worker_connections", например с 25000 до 2000, и если уменьшить, например, с 2000 до pm.max_children = 500 и с 3000 до pm.max_requests = 750 (естестственно, перезапуская после измения php-fpm) тоже не решает данной проблемы. Что делать? Куда смотреть?