最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】LNMP的wordpress网站crifan.com无法访问:502 Bad Gateway nginx

crifan.com crifan 4825浏览 0评论

访问:

https://www.crifan.com

结果:

502 Bad Gateway

nginx

且访问页面时(没有等很长时间,而是)立刻就502了。

之前是用lnmp安装的

此刻,貌似是正常的啊:

[root@crifan ~]# lnmp status
+——————————————-+
|    Manager for LNMP, Written by Licess    |
+——————————————-+
|              https://lnmp.org             |
+——————————————-+
nginx (pid 31106 31104 31103) is running…
php-fpm is runing!
SUCCESS! MySQL running (31621)
[root@crifan ~]#

lnmp 502 Bad Gateway nginx

lnmp下nginx出现502 Bad Gateway问题解决汇总_feihualang_新浪博客

通过:

(无意间的去看google adsense中自己的广告收入,虽然很少,但是和平时比,这只是早上这点时间,就算是多的了。-》所以推测是访问量还算是比较大的)

看起来像是:

“2. php-cgi进程数不足

    此原因的问题表现为:动态请求有时出现502错误,一般没问题,这是并发高时php-cgi进程数不够用的表现

    解 决方法:修改php-fpm配置php-fpm.conf,将 60< /value> 中的数加大,max_children数的设置不仅取决于服务器硬件配置,而且和php程序的复杂度有关,一般4G内存可以设置到 120-200。修改后把php-fpm reload下;必要时是再修改nginx配置nginx.conf, 将 worker_processes 数调到与cpu数相等(worker_processes默认为1)”

LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法 – LNMP一键安装包

“php一些模块之间也可能会造成502,如Zend GuardLoader与Opcache”

难道是opcache?

还是比较像是“第三种原因:

在安装好使用过程中出现502问题,一般是因为默认php-cgi进程是5个,可能因为phpcgi进程不够用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 将其中的max_children值适当增加,如果php已升级到5.3.*以上且使用的是dynamic模式,需要调整pm.max_spare_servers参数的值。

也有可能是max_requests值不够用。”

军哥…貌似php经常自动关闭 – LNMP一键安装包

想办法找到:

php-fpm.log

看看到底是什么原因

LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法

抽空找到:

slowlog看看慢日志

LNMP 常见502 Bad Gateway问题汇总_服务器应用_Linux公社-Linux系统门户网站

“错误三:资源耗尽

LNMP 架构处理 php 时,是 nginx 直接调取后端的 php-fpm 服务,如果 nginx 的请求量偏高,而我们又没有给 php-fpm 配置足够的子进程,那么总有 php-fpm 资源耗尽的时候,一旦耗尽 nginx 则找不到 php-fpm,此时就会导致 502 出现。那这时候的解决方案就是去调整php-fpm.conf 中的pm.max_children 数值,使其增加。但也不能无限设置,毕竟服务器的资源有限,根据经验,4G 内存机器如果只跑 php-fpm 和 nginx,不跑 mysql 服务,pm.max_children可以设置为 150,尽量不要超过该数值, 8G 内存可用设置为 300,以此类推。”

抽空可以去加上监控脚本:

lnmp出现502 Bad Gateway自动解决方法

lnmp出现nginx 502 Bad Gateway的解决方法 | 张衡Henry

lnmp php-fpm.log

开启 php-fpm 错误日志

nginx php-fpm 输出php错误日志 – 运维与架构 – nginx.cn

常见问题 – LNMP一键安装包

  • LNMP模式下如何开启PHP错误日志?访问网站提示500错误如何解决? 500错误首先就需要先开启php错误日志,通过php错误日志来排错。

    LNMP下的错误需要编辑 /usr/local/php/etc/php-fpm.conf 加上

    php_admin_value[error_log] = /usr/local/php/var/log/php_errors.log

    php_admin_flag[log_errors] = on

    或在/usr/local/php/etc/php-fpm.conf里设置,加上catch_workers_output = yes,错误信息就会记录到php-fpm.conf里error_log设置的文件里。 上述两种方法都行,重启php-fpm生效 同理php.ini里的display_errors也是需要在php-fpm.conf里设置的,加上php_flag[display_errors] = On就开启了。 有时可能错误日志文件不自动创建,可以执行:touch /usr/local/php/var/log/php_errors.log && chown www:www /usr/local/php/var/log/php_errors.log

[root@crifan ~]# cat /usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20
#request_terminate_timeout = 100
request_terminate_timeout = 300
#request_slowlog_timeout = 0
request_slowlog_timeout = 3
slowlog = var/log/slow.log
[root@crifan ~]#

可以看出:

1.是加了error的log的

/usr/local/php/var/log/php-fpm.log

2.之前对于:

pm.max_children = 20

pm.start_servers = 10

pm.min_spare_servers = 10

pm.max_spare_servers = 20

记得都是2倍的值的。

而对于:

pm.max_children

到底可以设置为多少,去研究看看:

【整理】php-fpm.conf中的pm.max_children到底应该设置为多少

然后也看到有人:

Adjusting child processes for PHP-FPM (Nginx) · MYSHELL.CO.UK

提到了:

php的log中提示的是,too busy

所以也去我这里的log看看:

先从服务器上下载下来:

[root@crifan ~]# sz /usr/local/php/var/log/php-fpm.log
rz
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring php-fpm.log…
  100%     812 KB     203 KB/sec    00:00:04       0 Errors

然后搜了busy,果然搜到了:

[09-Sep-2017 01:36:35] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 18 idle, and 36 total children
[09-Sep-2017 01:36:36] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 19 idle, and 38 total children

但是有点奇怪的是:

出现busy的时候,只是前几天,而且零星的出现了,今天9-15,也没有出现啊。

所以说感觉这次的502的原因,也不像是进程不够用。

不过从log中倒是发现了其他问题:

【未解决】lnmp中php警告:wp-cron.php execution timed out terminating

但是又从slow的log出发现更多情况:

【基本解决】www.crifan.com/index.php出错:amp_render() unknown:0

【总结】

1.此处暂时是:

优化了php-fpm的参数:

[root@crifan ~]# cat /usr/local/php/etc/php-fpm.conf
[global]
pid = /usr/local/php/var/run/php-fpm.pid
error_log = /usr/local/php/var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 30
pm.start_servers = 15
pm.min_spare_servers = 15
pm.max_spare_servers = 30
#request_terminate_timeout = 100
request_terminate_timeout = 600
#request_slowlog_timeout = 0
request_slowlog_timeout = 5
slowlog = var/log/slow.log

2.暂时禁止了AMP插件

3.重启lnmp

暂时没搞懂根本原因,先看看情况,如果后续再出现了502,再想办法。

【后记】

朋友说了:

502是NGINX的问题

改这个配置没用,是内存的问题,所以去:

【已解决】LNMP的网站中内存使用太多

转载请注明:在路上 » 【已解决】LNMP的wordpress网站crifan.com无法访问:502 Bad Gateway nginx

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.179 seconds, using 22.11MB memory