关于nginx信号控制的“故障”案例
关于nginx信号控制的“故障”案例
最近几天发现nginx的日志老切割不成功,遂来查找问题。
最开始以为是logrotate的脚本问题,遂手动切割,运行以下的命令
发现运行这个是没有问题的,终于,在service nginx restart后,发现了问题
问题是在用service nginx restart后,nginx.pid文件才会自动消失,于是,仔细检查脚本,发现一些端倪啊,一个字眼出现了
-QUIT从容关闭,也就是说这个进程是慢慢关闭的,不是立即关闭的,于是验证。如图
查看进程如下
可以看到,nginx正在shutdown之中,但没有一下子全部关闭了。
随着时间的推移,nginx老的进程在继续关闭中……
到最后,nginx之前的老进程全部关闭……
这时,nginx.pid文件没有了
到此,nginx.pid文件神奇消失的问题终于被找出来了。
继续分析-----日志分割,依靠的是nginx.pid获取nginx的进程号,分割成功后,出现的情况是nginx依然昨天的日志,不写分割后的日志。
那么现在需要对这个脚本进行修改,把stop函数中的-QUIT改为-TERM 立即关闭。(话说我这个脚本是来自官网改造的,看来官网也不是100%的准确哦,做运维要细心啊)
官方脚本地址http://wiki.nginx.org/RedHatNginxInitScript
再次运用此脚本重启
问题不再重现,已经解决了。
总结,一个小小的参数,可能会引发无限大的问题,所以,学知识要细心啊!
=============================================================
附录一:nginx的信号控制
附录二:nginx的启动脚本如下
附录三:日志切割脚本如下
总结
以上是生活随笔为你收集整理的关于nginx信号控制的“故障”案例的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: javascript笔记:推荐使用“百度
- 下一篇: ios开发图形绘制