隨後的一天裏,網站遭到了流量***,nagios報警只提示系統負載過大,然後打開流量圖看了一下,哎,尼瑪,臥槽,怎麼能這樣呢! 流量簡直爆表!
然後連接網站服務器,連接了半天才連上去,連上去之後,隨手打了個ls命令! 這個純屬習慣! 然後就卡着了,等了好一會才反應過來! 然後top了一下,同樣也是等了好一會! 系統負載爆表。Load飆到了100多,nagios都獲取不到狀態了! 因爲系統負載過大,nrpe信息已經發不出去了!
隨後猶豫都不帶猶豫的,直接把apache,java進程停止掉,然後在啓動! 釋放一下程序所佔用的空間! 系統進程負載100多,還指望怎麼排錯處理???打了ls反應半天纔過來,在給上級說要停止服務???等回覆過來,指不定服務器都掛個蛋了!
然後就看apache訪問日誌,當時直接看的是apache訪問的IP! 看到許多帶有後綴訪問過來的! 例如1.1.1.1.ha-dc 1.1.1.1.index-bn-spind-cn什麼亂起八糟的IP
隨後直接就防火牆匹配關鍵字來封殺掉!
iptables -I INPUT -m string --algo bm --string "1.1.1.1.ha-dc" -j DROP
直接丟棄,設置爲拒絕的話系統還要給那邊一個回覆值。
然後這麼着的把那幾個IP給封掉了。
隨後又盯着top看了一會,發現java程序不太正常,顯示的cpu佔用經常在500%-800% 左右波動。我們那的環境是用的weblogic做的中間件。Java程序一般在100%-200%是很正常的範圍。但是這麼高肯定就不太正常了。
隨後直接 top -H來看佔用資源最大的,果不其然,都是java! 然後找了個運行時間最長的線程,發現沒有什麼異常,並沒有像網上說的那種要轉換爲16進制的!
ulimit -a來看了一下允許的java最大的線程。發現設置的有點低
只允許同事65535個,有可能是這個的問題!
然後就把線程數設置到了最大
ulimit -n 102400
java允許設置的最大線程!
然後過了少過了一會,java穩定下來了!
額,(⊙o⊙)…(⊙o⊙)…java還能出現異常了! 我也是醉了。
然後到此,程序異常解決了。但是網站被刷流量的還沒有解決!系統負載固定在6左右,在看apache訪問日誌。發現有他們那些IP有的還能過了!額,
(⊙o⊙)…(⊙o⊙)…(⊙o⊙)…
因爲IP訪問次數過於巨大,iptables也不能全部擋住,問老大要了硬件防火牆。
然後在硬防裏邊設置了一下。到此,問題解決!