為什麼httpd會自動停止?
到iT邦幫忙

james112(iT邦初學者10級)發問:
Web Server的httpd最近有時候會自動停止,必須用「apachectl restart」指令重啟,為什麼會這樣子呢?

linyt(iT邦初學者7級):
如果伺服器還有保障契約,請廠商協助解決問題會比較快。如果已經過保固,建議以下做法:
1. 在伺服器安裝監控程式,每10秒檢查處理程序中的Apache是否存在,如果不存在就重啟。

2. 當Apache服務未執行時,讓監控程式發出簡訊或郵件。

就我管理的系統,部分用到Apache Server,多少也有出現異常停止服務的情況,目前都是用監控程式重啟服務。會發生的原因,可能和硬體有關(像是記憶體太少,或處理器的使用率長期在60%以上),但也有可能跟應用程式有關。可以找機會升級Apache伺服器的版本,看看是否會改善(但請注意應用程式搭配上是否有限定版本)。

另外可檢查應用系統的流量是否太高,由於Apache伺服器限制了線上人數,也有可能流量過大而造成服務停止。如果是這種情況,就把設定值調大。

soly(iT邦初學者10級):
可以看看系統記錄檔跟Apache記錄檔,說不定可以找出httpd停止時,是否有共同跡象。例如都是在某個時間點停止、每一段固定時間(如20分鐘)就會停一次。也可以考慮安裝一些監控程式如Nagios之類的,看看httpd停止時是否有規則可循。當監控軟體通知httpd停止時,也可以立即登入系統,看看立即的系統資源像是CPU、記憶體、硬碟I/O、網路使用活動、連線數之類的。同時也要觀察是不是某個程式一旦執行後,就會使httpd當掉,或是某個程式的instance數過多,導致系統無法負荷。

有時寫程式的人員沒有優化程式碼,又加上主機老舊,可能無法處理占用過大系統資源的程式。

熱門新聞

Advertisement