2014年5月12日 星期一

解決apache假死狀態故障-參考一下


硬件環境:惠普HP ProLiant ML570G3 (348137-AA1):4至強(XEON)3.0G CPU;8GB內存
軟件配置:Windows 2003:Apache 2.0.55、PHP 5.1.2、MySQL 4、Symantec AntiVirus 10
故障描述:Web服務器訪問不穩定,表現為每當瀏覽網頁幾分鐘後就不能訪問。下午4點左右Web服務器癱瘓,重新啟動服務器後恢復,但故障依舊。今天再次發生此問題。
  排查經過:

1、懷疑中了蠕蟲病毒,用Symantec AntiVirus 10全盤查毒後未發現。
2、懷疑Apache或MySQL文件損壞,排查後發現文件正確無誤,沒有缺少。
3、懷疑高考填報誌願期間,學校網站訪問人數增多,但昨天一直很正常,從Apache日誌中也看不出這種跡象。
4、懷疑有人用DDoS分佈式拒絕服務攻擊服務器,將Apache的httpd.conf中的Timeout 300改為Timeout 120,訪問速度好了些,但依舊不快。
5、用netstat –an多次查看網絡狀況,發現幾個可疑IP段不停地訪問服務器,狀態為TIME_WAIT。
6、鎖定了幾個可疑IP地址段:202.181.33.xxx、202.160.178.1-202.160.180.254、202.165.102.xxx,特別是來自202.160.178.1-202.160.180.254的訪問幾乎類似202.160.178.1、202.160 .178.2、202.160.178.3一樣一個接著一個。
7、追查可​​疑IP來源,發現除了202.181.33.xxx來自香港外,其它IP地址均來自雅虎中國。
8、由此斷定這些同時在線的將近1000個IP地址連接記錄是雅虎中國的搜索引擎爬蟲(Robots,一般翻譯為機器人)瘋狂地一遍又一遍抓取中南民族大學網站內容而留下的,加劇了網站的流量。
10、為了通過搜索引擎達到宣傳中南民族大學網站的目的,我不能直接封掉這些搜索引擎爬蟲的IP地址,只能加大Apache服務器的訪問負載能力。
11、嘗試了N種方法試圖加大Apache服務器的訪問負載能力,均告失敗。
12、發現Apache的子進程Apache.exe佔用的內存值從開始的100多M慢慢爬升到900多M就不動了,而此時網頁恰好無法訪問。終於找到了故障所在。
13、打開Apache的配置文件httpd.conf,將MaxRequestsPerChild的值設為100,重啟Apache,故障解決。 MaxRequestsPerChild用於控制服務器建立和結束Apache.exe子進程的頻率,如果線程大於100,則結束Apache.exe子進程,釋放內存,同時開啟一個新的Apache.exe子進程來處理訪問請求。

沒有留言:

張貼留言