Nginx:readv()失败(104:读取上游时重置对等连接)

问题描述 投票:3回答:1

我读过其他所有关于此错误的话题,但没有运气。

我正在RHEL 6上运行带有PHP-FPM 5.6的Nginx 1.12.2

我在网站的任何/所有页面上都收到这些错误。它与缓慢的请求无关。我亲眼目睹了这一点,并且立即得到了500错误页面,而没有任何等待。

它同时影响POST和GET请求。

我没有运行任何操作码缓存(据我所知),我检查了所有配置文件,phpinfo()以及php -v,但未提及任何操作缓存或操作码。]

我已在PHP-FPM中打开catch_workers_output。我没有收到任何PHP错误

我有足够的可用内存,并且系统日志中没有有关内存,文件描述符或套接字的错误。

尝试过的pm_max_requests具有较高和较低的数字

未运行xdebug插件

似乎是随机发生的,即使是在我们不很忙的半夜。

我迫切希望找到一个已经解决了几个月的问题。

[以下评论中要求提供一些信息:

Nginx fastcgi.conf(与原始文件的区别:

fastcgi_intercept_errors on;
fastcgi_param  REDIRECT_STATUS    200;
fastcgi_buffer_size   32k;
fastcgi_buffers 8 16k;
fastcgi_max_temp_file_size 0;
fastcgi_keep_conn on;

Nginx conf细节:

sendfile        on;
tcp_nopush      on;
tcp_nodelay     on;
server_tokens   off;
gzip            off;
gzip_static     on;
gzip_comp_level 5;
gzip_min_length 1024;
types_hash_max_size 2048;
client_body_timeout   900;
client_header_timeout 900;
keepalive_timeout     900;
send_timeout          900;
proxy_connect_timeout  900s;
proxy_send_timeout  900s;
proxy_read_timeout  900s;
fastcgi_send_timeout 900s;
fastcgi_read_timeout 900s;

Nginx特定于位置的配置:

client_max_body_size 40M;

location ~ \.php$ {
       fastcgi_pass   127.0.0.1:9000;
       include        fastcgi.conf;
}

php-fpm配置详细信息:

listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 1000
pm.start_servers = 300
pm.min_spare_servers = 200
pm.max_spare_servers = 350
pm.max_requests = 1000 ; I've tried higher/lower with no difference
slowlog = /var/log/php-fpm/www-slow.log
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php_error_log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

安装的版本:

php.x86_64                                                               5.6.33-1.el6.remi                                      @remi-php56                       
php-bcmath.x86_64                                                        5.6.33-1.el6.remi                                      @remi-php56                       
php-cli.x86_64                                                           5.6.33-1.el6.remi                                      @remi-php56                       
php-common.x86_64                                                        5.6.33-1.el6.remi                                      @remi-php56                       
php-devel.x86_64                                                         5.6.33-1.el6.remi                                      @remi-php56                       
php-fedora-autoloader.noarch                                             1.0.0-1.el6.remi                                       @remi                             
php-fpm.x86_64                                                           5.6.33-1.el6.remi                                      @remi-php56                       
php-gd.x86_64                                                            5.6.33-1.el6.remi                                      @remi-php56                       
php-gmp.x86_64                                                           5.6.33-1.el6.remi                                      @remi-php56                       
php-imap.x86_64                                                          5.6.33-1.el6.remi                                      @remi-php56                       
php-mbstring.x86_64                                                      5.6.33-1.el6.remi                                      @remi-php56                       
php-mcrypt.x86_64                                                        5.6.33-1.el6.remi                                      @remi-php56                       
php-mysqlnd.x86_64                                                       5.6.33-1.el6.remi                                      @remi-php56                       
php-pdo.x86_64                                                           5.6.33-1.el6.remi                                      @remi-php56                       
php-pear.noarch                                                          1:1.10.5-4.el6.remi                                    @remi                             
php-pecl-igbinary.x86_64                                                 2.0.5-1.el6.remi.5.6                                   @remi-php56                       
php-pecl-imagick.x86_64                                                  3.4.3-5.el6.remi.5.6                                   @remi-php56                       
php-pecl-jsonc.x86_64                                                    1.3.10-2.el6.remi.5.6                                  @remi-php56                       
php-pecl-jsonc-devel.x86_64                                              1.3.10-2.el6.remi.5.6                                  @remi-php56                       
php-pecl-memcache.x86_64                                                 3.0.8-3.el6.remi.5.6                                   @remi-php56                       
php-pecl-memcached.x86_64                                                2.2.0-3.el6.remi.5.6                                   @remi-php56                       
php-pecl-msgpack.x86_64                                                  0.5.7-1.el6.remi.5.6                                   @remi-php56                       
php-pecl-ssh2.x86_64                                                     0.13-3.el6.remi.5.6                                    @remi-php56                       
php-pecl-zip.x86_64                                                      1.15.2-1.el6.remi.5.6                                  @remi-php56                       
php-process.x86_64                                                       5.6.33-1.el6.remi                                      @remi-php56                       
php-xml.x86_64                                                           5.6.33-1.el6.remi                                      @remi-php56 


nginx version: nginx/1.12.2

Kernel: 2.6.32-696.20.1.el6
php nginx
1个回答
0
投票

就我而言,这是因为Netflix Zuul:

[当我尝试上传超过1 MB的文件时,我从nginx日志中收到此消息:

readv()在读取上游时失败(104:对等方重置连接]

我的Web应用程序使用Nginx并重定向到Netflix Zuul。因此,我需要在properties.yml

中设置此配置
servlet:
multipart:
  max-request-size: 0
  max-file-size: 0
© www.soinside.com 2019 - 2024. All rights reserved.