為什麼 Apache 收到 SIGTERM 後就停止了?

為什麼 Apache 收到 SIGTERM 後就停止了?

我有一個運行 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 是典型的在記憶體問題中會被殺死的東西之一。

相關內容