在读取上游

时间:2018-01-31 15:41:37

标签: php nginx

我已经阅读了有关此错误的所有其他帖子而没有运气。

我在RHEL 6上使用PHP-FPM 5.6运行Nginx 1.12.2

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

它会影响POST和GET请求。

我没有运行任何操作码缓存(我知道)我检查了所有配置文件,phpinfo()以及php -v,并没有看到任何提及opcache或操作码。)

我在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

1 个答案:

答案 0 :(得分:0)

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

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

  

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

我的Web应用程序使用Nginx并重定向到Netflix Zuul。所以我需要在properties.yml中设置此配置

servlet:
multipart:
  max-request-size: 10MB
  max-file-size: 10MB

它对我有用。

注意:如果将大小设置为0并使用spring security,它将超过限制。