当前位置: 首页 > 知识库问答 >
问题:

502在高负载下使用PHP-FPM的坏网关nginx

漆雕和昶
2023-03-14

我们目前正在AmazonEC2上运行nginx背后的PHP-FPM。站点将停止响应,并在每次高负载时向客户端输出502坏网关。

这是php fpm错误的日志。日志

[25-Feb-2014 10:29:50]警告:[pool www]服务器达到pm.max_children设置(14),考虑提高它

[25-Feb-2014 12:23:11]警告:[池www]child 2029在启动8736.088351秒后以代码3退出

[25-Feb-2014 12:23:11]通知:[泳池www]child 4142已启动

这是nginxerror.log的日志

2014/02/25 14:14:30[错误]2013#0:*51168 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:192.168。160.215,服务器:域。com,请求:“GET/HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”

2014/02/25 14:24:15[错误]2013#0:*51310 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:192.168。160.215,服务器:域。com,请求:“GET/HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”

2014/02/25 14:40:21[错误]2013#0:*51312 recv()在从上游读取响应头时失败(104:由对等方重置连接),客户端:192.168。160.215,服务器:域。com,请求:“GET/HTTP/1.1”,上游:fastcgi://127.0.0.1:9000,主机:“www.domain.com”

我们已经基于此交换实现了TCP/IP配置。nginx php5 fpm中出现错误502

并在高负载(nginx/php-fpm)下对我们的php-fpm配置以及502网关错误进行修复

这是我们在php fpm中使用的配置。d/www.conf

listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 14
pm.start_servers = 7
pm.min_spare_servers = 7
pm.max_spare_servers = 14

nginx/conf.d/www.conf上的配置如下所示

fastcgi_buffers 256 16k
fastcgi_buffer_size 32k
fastcgi_connect_timeout 300
fastcgi_send_timeout 300
fastcgi_read_timeout 300

共有2个答案

南门祯
2023-03-14

关于“我们应该为我们的最大孩子设定什么数字的任何具体理论”,请参见此处https://serverfault.com/questions/295766/what-is-wrong-in-my-php-fpm-configuration

顺便说一句,我认为你的价值观

    pm.start_servers = 7
    pm.min_spare_servers = 7
    pm.max_spare_servers = 14

你是大块头吗?试试这些

    pm.start_servers = 3
    pm.min_spare_servers = 2
    pm.max_spare_servers = 5
呼延才
2023-03-14

使用PHP FPM,需要PHP进程的请求从nginx传递到PHP FPM进程,并返回结果。

如果您一次有太多的请求(如果您的任何请求花费的时间太长,或者您的资源与负载不匹配,就会发生这种情况),您将开始接收超时或被php fpm拒绝的请求。这就是您看到的502错误。

[25-Feb-2014 10:29:50]警告:[pool www]服务器达到pm.max_children设置(14),考虑提高它

您可以增加这个,但这本身可能不是一个解决方案。达到max children的原因很可能是由于在实例上处理单个请求所需的时间。如果发生这种情况时,您的CPU已达到最大值,那么这可能不会有帮助。

您可能需要考虑将实例大小增加为短期解决方案。或者进行代码更改以更好地利用缓存。

 类似资料:
  • 我用Ired邮件和两个网站成功地运行了Ubuntu服务器20.04,其中一个是WordPress。 我想安装Nextcloud,为此我必须重新安装php fpm以生成php7。4-fpm。短袜在这之后,Nextcloud工作了,但是我的其他网站停止了工作,出现了错误“502坏网关”。 所以至少可以说,我很困惑! 我根据本文安装了Nextcloud并设置了启用的站点。符合说明的conf文件:http

  • 我一直在努力解决Nginx获得502坏网关的问题。 最困难的是,日志对此几乎毫无用处。 我使用的是VueJS,因此请求/响应更像是REST体系结构。 它目前正在做的只是试图返回公司信息,但我得到了一个网关错误。问题是,这完全是随机的。 (注意:CORS错误是由于502坏网关而发生的) 它只会偶尔发生,但不会一直发生。当我把请求通过一个铬扩展称为Restlet客户端工作非常好。 回顾Nginx错误,

  • 配置 Ubuntu服务器11.10 64位 亚马逊AWS,Ec2,云端托管 t1。微实例 在我写任何其他东西之前,我想声明我已经检查了nginx 502坏网关和nginx PHP-FPM 502坏网关线程,不幸的是,这在这方面对我没有帮助。 这个问题似乎很常见:nginx或php fpm的错误配置可能导致错误,这是我一直无法解决的问题。请注意,即使在我转到我的域根目录时,也会出现这种情况,而不指定

  • 我有一个基于php和nginx图像的web应用程序...一切都很好,直到我在PHP配置下设置了一个命令: docker撰写。yml 这是我的默认。形态 这是我的supervisord.conf nginx日志显示我: nginx|u 1 | 2018/10/02 00:42:36[错误]11#11:1 connect()在连接到上游时失败(111:连接被拒绝),客户端:172.23。0.1,服务器

  • 这是我的设置细节 Nginx。形态 默认情况下,我的conf文件包含可用站点和已启用站点 当我按我的域运行html文件时,它工作正常。 但如果我转到php文件,例如 它给出了nginx的502坏网关错误 出现问题时,Php5 fpm正在运行

  • 我正在编写PHP,MySQL 知道我做错了什么吗? phpinfo正在工作 /log/nginx/access.log /log/virtualhost/error.log /log/php-fpm.log 我的Nginx conf /usr/local/etc/nginx/nginx.conf 我的Nginx虚拟服务器conf/usr/local/etc/Nginx/sites availabl