Apache2 伺服器停止回應

Apache2 伺服器停止回應

我正在尋找關於我應該在哪裡深入挖掘的建議。

很快,Apache2 伺服器會在啟動 2-15 小時後停止處理請求。結果我必須service apache2 restart每半天做一次。

長版:

  1. 我從專用伺服器(Ubuntu 13.04)運行幾個網站(Apache 2.2.22 於 2013 年 7 月 12 日建置)。
  2. Apache2 伺服器在半年多的時間裡表現良好,現在突然停止處理所有網站(大約有 5 個網站)上的請求,直到 apache 進程重新啟動。
  3. 我在 /var/log/apache 中找不到任何關於該問題的異常日誌。
  4. service apache2 status報告進程正在運行

我很高興聽到您的建議,以及我在我的情況下該怎麼辦。

更新:

跑步netstat -an | grep 80

tcp6       0      0 :::80                   :::*                    LISTEN
tcp6     325      0 SERV_IP:80       IP_A:35514     CLOSE_WAIT
tcp6     332      0 SERV_IP:80       IP_B:34198     CLOSE_WAIT
tcp6     379      0 SERV_IP:80       IP_C:57859     CLOSE_WAIT
tcp6       0      0 SERV_IP:80       IP_A:35060     CLOSE_WAIT
tcp6     360      0 SERV_IP:80       IP_A:38481     CLOSE_WAIT
tcp6     466      0 SERV_IP:80       IP_B:56324     CLOSE_WAIT
tcp6     361      0 SERV_IP:80       IP_A:53466     CLOSE_WAIT
tcp6       1      0 SERV_IP:80       IP_A:38102     CLOSE_WAIT
tcp6     196      0 SERV_IP:80       IP_E:58125     ESTABLISHED

還有更多類似的條目,大約有 150 個。

ps aux | grep apache

root      2968  0.0  0.0 452240 21116 ?        Ss   16:08   0:01 /usr/sbin/apache2 -k start
www-data  5217  0.0  0.0 463584 23820 ?        S    17:04   0:03 /usr/sbin/apache2 -k start

後面的行(www-data)大約有 120 個,所以我假設有 120 個 apache 進程?

strafe在 apache2 根進程上使用:

 sudo strace -f -p 2968
Process 2968 attached - interrupt to quit
select(0, NULL, NULL, NULL, {0, 264394}) = 0 (Timeout)
wait4(-1, 0x7fff6d157a6c, WNOHANG|WSTOPPED, NULL) = 0
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
wait4(-1, 0x7fff6d157a6c, WNOHANG|WSTOPPED, NULL) = 0

在 www-data 進程之一上使用:

sudo strace -f -p 8554
Process 8554 attached - interrupt to quit
flock(40, LOCK_EX

哇,在我看來,apache 進程似乎陷入了困境,一旦超過最大連線限制,它就會停止建立新實例。但為什麼他們會被卡住呢?

htop、iotop、jnettop 不報告任何異常。 (無超載)

UPDATE2:過去兩天伺服器不再崩潰。所以我無法獲得更多資訊。一旦獲得更多信息,我將留下一個指向具有更好結構的新問題的連結。謝謝

答案1

無論「service apache2 status」報告如何,當您執行 ps aux 時,您是否看到 apache 進程?

出現問題時可以執行netstat -n 嗎?也許您用完了資源(例如文件描述符),您可能有太多打開的連接。

問題期間你的cpu利用率高嗎?也許系統記憶體不足並且正在崩潰?

http 伺服器回應連線被拒絕或連線只是逾時?

在後一種情況下,我建議執行 strace -f -p [apachepid],您可能會發現哪個系統呼叫正在封鎖請求。前者可能是 apache 崩潰了。

您代理 Tomcat 或其他應用程式伺服器還是提供純靜態 html?

您是否配置了身份驗證?例如,身份驗證層可能出現問題

更新:

在第二個strace中,我看到這個flock(40,LOCK_EX,也許進程試圖在某個地方獲得獨佔鎖?你可以執行lsof -n -p 8554(或任何pid嘗試聚集)並查看它嘗試鎖定哪個檔案(40是檔案描述子)。

相關內容