访问:
结果:
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-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出现nginx 502 Bad Gateway的解决方法 | 张衡Henry
lnmp php-fpm.log
nginx php-fpm 输出php错误日志 – 运维与架构 – nginx.cn
“
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的wordpress网站crifan.com无法访问:502 Bad Gateway nginx