![為什麼 Apache 收到 SIGTERM 後就停止了?](https://rvso.com/image/717728/%E7%82%BA%E4%BB%80%E9%BA%BC%20Apache%20%E6%94%B6%E5%88%B0%20SIGTERM%20%E5%BE%8C%E5%B0%B1%E5%81%9C%E6%AD%A2%E4%BA%86%EF%BC%9F.png)
我有一個運行 nginx 的伺服器來取得靜態內容,後面有 apache,運行 php 和 python 程式碼。
大約每天一次 Apache 就會退出,導致 Nginx 出現 502 Bad Gateway 錯誤。我在日誌中只能找到 Apache 收到的 SIGTERM,沒有其他詳細資訊。
[mpm_prefork:notice] [pid 11811] AH00169: 捕獲 SIGTERM,正在關閉
現在它已經正常運作了一段時間,除了磁碟空間不足之外沒有任何維護。幾個月前我做了一些 SSL 代理設定。運行 Debian Jessie
答案1
使用auditd 記錄所有kill 系統呼叫。 -S kill
在audit.rules 檔案中。看如何使用audit來監控特定的SYSCALL?。日誌條目將包含每次終止的 pid、uid 和 exe,找到 httpd 關閉之前的。
我猜這是一個未正確重新啟動的日誌輪換腳本。
答案2
捕獲 SIGTERM
這意味著系統正在向 Apache 發送終止命令。我會開始尋找停止/重新啟動 Apache 的 Rogue cron 作業,或開始檢查日誌sar
以查看是否有任何資源問題。當出現記憶體問題時,伺服器會自動終止進程以保持自身活力。 Apache 是典型的在記憶體問題中會被殺死的東西之一。