好久不寫技術文章了,越發的認為單純的講技術沒啥意思。怪不得知乎越來越火。由於大家都喜歡看故事。不喜歡硬生生的技術文章。筆者今天就來就給大家講故事:)
近期站點壓力突然增大,把頻寬都佔滿了,訪問網頁發現非常的慢。開啟頁面的速度也奇慢大概要十幾秒。
這樣的情況還是第一次遇到。感覺不是被攻擊了就是被攻擊了!以下是站點的流量截圖,一共1m的頻寬在15點左右的時候瞬間慢了。然後就是持續的在峰值左右徘徊。
當時的想法是莫非站點的訪問量到達了一定程度要新增頻寬了?可是通過看站點的統計資料,訪問的人數並沒有明顯的新增。這時自己更加堅定一定是被攻擊了!
ssh連上server檢視日誌,竟然連ssh都特別慢。這讓我更加堅定自己的推斷,媽蛋絕對被攻擊了。可是後台日誌沒有什麼明顯的錯誤資訊。可是站點還是特別卡,一直持續了兩個小時。一定是自己忽略了什麼東西。既然是變慢。首先看cpu,記憶體啥的。於是檢視了一下server的cpu和記憶體,沒有啥問題,就是頻寬變滿了。
看來是大量的訪問造成的。重新認真的檢視了日誌,這次看的是tomcat的access日誌,這下發現了問題。非常多頁面在同一時間。或者說基本上在同一時間被訪問了多次。
假設說整個日誌中有那麼幾條是這樣的反覆的倒還能夠理解,可能是使用者打不開頁面觸發了瀏覽器的重新整理操作,可是大面積的都是這樣的反覆的訪問請求肯定就不正常了。
檢查了一下自己的前台**看看是否是自己的js寫錯了,導致client同一時間發起多次請求。
檢查了半天未果。
到這裡問題算是找到了:多次請求導致頻寬不夠用。可是原因是什麼呢?繼續講故事……
想到自己在配置站點的時候用到了
nginx
做反向**,突然就感覺會不會是
nginx
的配置有什麼問題呢?檢查了一遍
nginx
的配置,沒發現啥問題。簡單的轉向再寫錯就不活了。莫非反覆的請求本身不是server配置的問題?於是檢查了
nginx
的accesslog,
令人吃驚的是在
nginx
的log
其中相同的是反覆的訪問情況。
這就證明了不是我配置的問題,由於access log足以證明在請求到達server之前就是多次請求。難道真的有人攻擊?於是開始查詢nginx
的log
其中反覆的
ip。果然讓我找到了一些反覆的
ip,這些
ip都是
72.21.217.*
這個網段的。到這裡我知道真相距離我越來越近了。去網上搜尋的了一下這個網段的
ip更是讓我大吃一驚。
原來這些ip都是來自於亞馬遜的爬蟲,頓時恍然大悟,這一切都是由於前幾天在網頁上加上了亞馬遜的廣告。聯絡了亞馬遜的客服人員,細緻詢問了亞馬遜是否會索引廣告所在的頁面,得到的回答是肯定的。到此為止一切真相大白。
原來亞馬遜為了提供更好的廣告質量。索引了有廣告的頁面,造成的後果就是每當使用者訪問乙個帶有廣告的頁面他的蜘蛛就會爬取這個頁面,所以站點壓力肯定增大嘍。
知道了原因以下就是採取措施來避免了。改動nginx配置非常輕鬆的遮蔽掉亞馬遜的ip。
location /
index index.jsp;
proxy_pass
}
然後reload nginx的配置,站點一切恢復如初。
總結:一切都有因果,不論什麼事情絕不是憑空產生的,僅僅要追根溯源耐心尋找就一定能找出事實的真相。
nginx tomcat反覆請求
好久不寫技術文章了,越發的認為單純的講技術沒啥意思。怪不得知乎越來越火。由於大家都喜歡看故事。不喜歡硬生生的技術文章。筆者今天就來就給大家講故事 近期站點壓力突然增大,把頻寬都佔滿了,訪問網頁發現非常的慢。開啟頁面的速度也奇慢大概要十幾秒。這樣的情況還是第一次遇到。感覺不是被攻擊了就是被攻擊了!以下...
Nginx Tomcat 做請求分發以及負載均衡
1 安裝tomcat 略 在 nginx 1.8.0 conf目錄下有乙個nginx.conf檔案,有如下 server error page 500 502503 504 50x.html location 50x.html listen 80 表示監聽80埠.server name localh...
Nginx Tomcat 做請求分發以及負載均衡
在 nginx 1.8.0 conf目錄下有乙個nginx.conf檔案,有如下 server error page 500 502503 504 50x.html location 50x.html location 實現 訪問本地的工程,訪問linux伺服器上的工程 在阿里上的虛擬主機 首先要修...