最近两天公司阿里云linux服务器上的几个网站经常性出现打不开的情况,浏览器不停的显示在加载然后提示 Nginx 502 bad gateway;
按照网上提到的方法修改了php-fpm配置文件 参考了阿里云ecs主机Nginx 502 bad gateway问题的解决方法
pm.max_children = 50
pm.start_servers = 15
pm.min_spare_servers = 10
pm.max_spare_servers = 40
同时修改nginx.conf
http {
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
……
}
通过 df -h命令查看磁盘使用量,发现系统盘使用达到了将近100%,果断进去把nginx和php-fpm之前产生的日志文件都删除了,然后再一查,发现磁盘使用量马上将到了24%(此时心里暗喜,以为问题已经解决了)
然后执行“/usr/sbin/php-fpm”命令来启动php-fpm,虽然php-fpm启动成功,但出现了如下提示:
[19-Jun-2018 16:51:08] NOTICE:fpm is running ,pid 16831
[19-Jun-2018 16:51:08] NOTICE:ready to handle connections
[19-Jun-2018 16:51:08] NOTICE:systemd monitor interval set to 10000ms
php-fpm占了这个窗口,它不后台运行了,只好crtl+c来强制退出,又出现如下提示:
^C[19-Jun-2018 16:51:18]NOTICE:Teminating…
[19-Jun-2018 16:51:18]NOTICE:exiting.bye-bye!
经过反复测试,发现php-fpm可以正常启动,只是不能后台运行,只要启动了php-fpm,不关闭这个窗口,网站的php都可以解析,也能正常访问。这样的问题如何解决?
杀死对应进程重启,任然提示:systemd monitor interval set to 10000ms,然后只能强制退出
解决办法:
1、首先要保证安装的PHP程序没有问题,因为最近公司网站没有改动,昨天还运行得好好的,所以php程序是确定没有问题的。
2、查看php-fpm配置文件,因为php-fpm配置文件有一个选项是:
daemonize = no
#后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。
网上查了一个php-fpm参数配置参数方面的文章,看到这样一句,当时感觉问题应该就出现在这里了
最后再启动 php-fpm,发现顺利启动,php页面也能正常打开了。但是此时让我感到疑惑的是公司网站配置文件一直都是没有修改过的,为什么daemonize = no这样设置,之前一直都运行得好好的呢?
个人猜测可能是php-fpm模块刚开始启动的时候是用默认配置daemonize = yes启动的,后面就一直没有重启过php-fpm,这次因为磁盘使用满了,导致页面报 502 bad gateway问题,此时我再来重启php-fpm 就导致一直不能后台运行的问题。