gpt4 book ai didi

sockets - keepalive & fastcgi_keep_conn 开启时 Nginx+php-fpm 出错

转载 作者:行者123 更新时间:2023-12-03 11:56:25 47 4
gpt4 key购买 nike

我正在尝试将 Nginx + php-fpm 与 nginx 选项“keepalive”和“fastcgi_keep_conn on”一起使用,以保持它们之间的 tcp 连接处于事件状态,但在服务数百个请求后面临错误“104:连接由对等方重置” .

这些错误在 php-fpm 在 tcp 端口 ( 9000 ) 或 unix 套接字 (/var/run/php5-fpm.socket ) 上启动时可见。

这里的意图是尽可能减少Nginx + php-fpm 之间新的tcp/socket 连接开销,并尽可能重用连接。请注意,我将 nginx 'keepalive 20' 设置为 php-fpm 'pm.max_requests = 0' & 'pm.start_servers = 50'。

谁能帮我解决这个错误?

正在使用的软件:

    nginx version: nginx/1.4.7
php-fpm version: 5.4.25 / 5.6.6

PHP-FPM 错误日志条目:

    WARNING: [pool www] child 15388 exited on signal 15 (SIGTERM) after 2245.557110 seconds from start 
NOTICE: [pool www] child 18701 started

Nginx 错误:

使用 php-fpm 监听端口 9000

    [error] 32310#0: *765 readv() failed (104: Connection reset by peer) while reading upstream, client: 10.10.133.xx, server: 192.168.28.xxx, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "10.10.133.xxx"

使用 php-fpm 监听套接字/var/run/php5-fpm.socket

    [error] 14894#0: *383 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 10.10.133.xx, server: 192.168.28.xxx, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.socket:", host: "10.10.133.xxx"

以下是 nginx 虚拟主机配置

    upstream fastcgi_backend {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.socket;
keepalive 30;
}
server {
listen 80;
server_name 10.10.xxx.xxx;
access_log /tmp/ngx_access_80.log;
error_log /tmp/ngx_error_80.log;

location ~ \.php$ {
root /var/www/test/;
include fastcgi_params;
fastcgi_pass fastcgi_backend; //upstream set above
fastcgi_keep_conn on; #Test for keepalive connection to php-fpm
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}

以下是php-fpm.conf

    [global]
pid = /var/run/php-fpm-9000.pid
error_log = /var/log/php-fpm-9000.log

[www]
listen = 0.0.0.0:9000
user = daemon
group = daemon
rlimit_files = 60000

pm = dynamic
pm.max_requests = 0

pm.max_children = 500
pm.start_servers = 50
pm.min_spare_servers = 40
pm.max_spare_servers = 90

最佳答案

您必须将 nginx keepalive_requests 和 php-fpm pm.max_requests 设置为相同的值以避免出现此错误

[error] recv() failed (104: Connection reset by peer) while reading response header from upstream

如果这两个值不匹配,则 nginx 或 php-fpm 最终会关闭连接,从而触发错误。

关于sockets - keepalive & fastcgi_keep_conn 开启时 Nginx+php-fpm 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29770818/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com