周一又是新的开始!所有事情都按照往常的节奏按部就班,有条不紊的进行着。首先是检查下各网站及应用系统是否正常,然后看看日志信息是否也有异样,一圈下来结果跟以前差一样没有其它问题。
今天唯独没有像往一样,上线之后并没打开系统监控(平时都是用SecureCRT登录系统之后,打开TOP命令让它一直在线,偶尔看下)。到了早上10点多快11点的时候,随手又点击了一下网站,这下出现的画面让我为之一醒(不是一惊)
原文就是:An error occurred.
Sorry,the page you are looking for is currently unavailable.
Please try again later.
If you arre the system administrator of this resource then you should check the error log for details.
所 实话这个介面还真不多见,但跟这个相似的就是前后端连接超时也会出现一个提示页面,但内容不太一样。这下我就急了,难道被人黑了?因为最近老有朋友说他的 网站被挂马了,所以我一个冲上来的念头就是被人黑了。连忙SSH登录后台看看,最后的登录IP也是自己的,这才稍有点放心,是自己紧张过头了。
稍作冷静之后,再结合提示页面的信息,应该是系统服务出了问题而非被入侵造成。于是就从检查日志、进程、端口等方面着手展开排查,很快就在php-fpm.log日志文件有所发现,几乎全部都是同样的信息,如下:
connect() failed (111: Connection refused) while connecting to upstream
upstream: fastcgi://127.0.0.1:9000
from these line it is clear it is not listening to port 9000. Or its listen queue is full.
然后再检查下PHP-FPM进程和9000端口,我勒个去~没有进程(自然就没有端口了),到底怎么回事?我安装的时候明明已经加入开机启动PHP-FPM服务的,怎么现在居然没起来呢?索性手动启动试试:
#
#services php-fpm start 回来之后,居然提示已经运行
php-fpm already running...
#services php-fpm stop
Stopping php-fpm: [FAILED]
提示失败!!!!
我再根据日志信息问过度娘,她说出现这样的提示应该是日志超过了2G导致,要解决这个问题就把相关参数调整一下,把log_level由notice改为error,只记录错误级别的信息。
很 快就找到php-fpm.conf文件并作相应修改(不过我马上发觉得有问题:刚才查日志的时候,那个日志才1M不到,距离2G还很远呢,所以断定不是这 个问题了),但还是修改一下吧,反正没其它影响的。不过查到这里,心里不禁紧张起来。这时才想起要问问运营商,是不是他们做过什么手脚,这才得知一小时前 他们重启过机器,再结合刚才手动启动服务和停止服务时的提示信息,一个说php-fpm已经运行,一个说不能终止服务。
突然似乎想到了什 么,要检查下PID文件,因为在Linux下记录某个进程是否运行是通过生成一个对应的PID文件,写入当前的进程号作标识的。真是喜出望外呀~这个 pid文件是空的,虽然有这个名称的文件,但里边没有内容。所以就解释了为什么启动服务就说已经运行,停止它的时候说失败了。几经检查,发现用来启动 php-fpm的脚本写得不严密,只是在启动的时候检查是否有pid文件存在而不管它是否有真实的PID内容,才造成了启动、停止都不正常。
解决办法:
在启动指令之前加入对PID文档的检查,如果是空文件就删除,使得服务可以正常启动。
if [ ! -s $php_fpm_pid ]; then
rm -f $php_fpm_pid
fi
$php_fpm_pid是指向php-fpm记录进程号的文件,定义在php-fpm的启动脚本前边,详细的内容会在下一篇文章介绍。我这次的遭遇就是因为服务器意外被重启,导致php-fpm.pid文件为空(为什么出现空文件的情况还有待求证)。
以 上就是本周第一天遇到的一段小插曲~虽然没造成大影响,但是又一次考验了自己在这些情况下处事的应变能力,希望此文也能帮助到其它站长:在发现问题之后先 冷静,并认真阅读相关提示信息,不明白意思的地方可以问问度娘或者狗哥,对可能出现问题的地方逐一排查,在解决问题的同时也长进了相关的知识!!
信息提供:920影院(),欢迎转载,并注明出处,谢谢!
评论