关于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开发图形绘制