Apache崩潰(異常停止/無法法啟動執行)的幾個很可能的原因
Apache崩潰(異常停止/無法法啟動執行)的幾個很可能的原因
資料來源:https://blog.csdn.net/huliang82/article/details/4630706
1,磁盤空間不足
這是最容易忽視的問題,現在的磁盤便宜,一般人的機器磁盤的空間都是有很多剩餘的,不要想當然的認為不是你磁盤空間的問題,也許是日誌?或者是你的緩存文件突然吃光了你的磁盤呢?df -h一下很容易的事情,磁盤空間不足會造成很多怪異的現象,Apache進程不斷堆積不釋放,由於出現“could not make child process * exit,attemption to continue anyway…”之類的錯誤日誌,最後Apache吃掉整個機器的內存,SSH不能登錄,不能Reboot,不能Kill進程,,只能強行重啟了
2,檢查Apache的日誌達到2G!!
通常對自己的日誌都有一個大概的估計,但檢查一下Apache的日誌大小也是很有必要的,特別是Apache的Access日誌,但近來一些極端無聊的所謂的垃圾人,不斷掃描你的機器的目錄,試圖在你機器上下載你的Wwwroot.rar,下載你的Data.mdb,草,還在你的PHP的腳本目錄裡面掃描你的Upload.asp文件,(做個Rewrite,餵給這些掃描一些木馬或者廣告,呵呵,我就是這麼幹的),這樣的垃圾人給Apache的Error日誌產生很多垃圾信息。如果Apache日誌達到2G(限制),Apahce很可能出現一些無法解釋的怪異的現象,Httpd進程無法啟動,或者一啟動,馬上又停掉。
3,DDos攻擊
通常這類的方法檢查和處理比較麻煩,排除了你機器本身原因,Apache配置的原因,發現Apache的還是不停的崩潰,哪監測一下服務器網絡連接情況,
用腳本看一下連接情況:
netstat -na |grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n,
或者統計一下請求過多的的IP:
netstat -an | grep -v LISTEN | awk '{print $5}' | awk 'BEGIN { FS=”:” } { Num[$1]++ } END { for(i in Num) if(Num[i]>8) { print i } }' | xargs -i[] iptables -I INPUT -s [] -j DROP)
直接封掉他們,對DDos通常是沒有較好軟防,如果資金允許,哪買好點的硬防吧。
對於DDos攻擊,主機託管在外地,或者去機房不方便,哪就很難監測和處理,等你機器崩潰的時候,你遠程SSH根本進不去了,鬱悶之極。
Apache有一個防DDos的模塊mod_evasive(mod_evasive的安裝看這裡),沒法評價其效果,但至少可以幫你記錄DDos過來的IP,實在太過份的DDos,哪直接報警。