天天看點

網站響應慢的原因分析

        我原來的一個學生今天給我打電話說他們網站通路的時候特别慢,讓我幫他分析一下原因。原來也有一些朋友問過我類似的問題,今天晚上特意寫了這篇文章跟大家分享,希望對大家有所幫助。假如你是運維人員你會如何做?原因大概有幾個方面呢?如果你已經有一定的運維經驗了,希望你能夠先自己想一下,看一下自己想到的有哪些方面,然後再往後看,這對你總結問題會很有幫助奧。我總結大概有幾個方面:

    第一個方面,網絡問題。網絡問題可能細分為幾種,1. 使用者本身的網絡慢,比如有的使用者為了省錢會在一些小營運商那裡拉寬帶,其實賤錢無好貨在這裡也是适應的。這些小營運商為了省錢,他們的帶寬一般都比較差,甚至是外省的資源。有得朋友明明在北京上網,ip138卻顯示你是天津的ip就是這個原因。最簡單的判斷方法就是你去tracert一個比較大網站,比如www.so.com看一下有多少跳,一般情況下在10跳左右如果比這個大很多就可能是這個問題了。

    第二個方面是跨營運商的問題。比如使用者的網絡是電信,而你們伺服器放在聯通機房。大家都知道中國的營運商之間的網絡聯通情況是比較糟糕的,一旦出現這種跨營運商通路的時候就非常容易出問題,這時候可以選擇把伺服器放到雙線或者多線機房裡來解決問題。

    第三個方面,劫持問題。這種情況必須有一定的運維經驗的人才會了解。一般情況下一些小得營運商,特别是移動經常會出現這個情況。前段時間我們360軟體管家的營運部門聯系我說有幾個某省移動網的使用者在用軟體管家時出現白屏的情況,讓我協助他們分析一下原因。我在聯系使用者獲得相應的資訊,分析之後發現在使用者端通路我們域名時解析出來的ip是錯的,根本不是我們伺服器的ip。很顯然這是移動劫持了我們軟體管家用得某些域名。其實劫持有好幾種,這隻是其中一種,等我有時間再專門針對劫持跟大家做一次分享。

    第四個方面,伺服器負載過大。首先根據報警系統,比如收到的手機短信來判斷是提供服務的所有節點都有報警還是個别節點有報警。如果是大面積的報警可能是你們的業務受到了攻擊或者是最近一版的網站代碼有bug。這時你可以去伺服器上面用netstat等指令來看一下伺服器的tcp連接配接情況。假如連接配接數并不是太多,比如你們用的是nginx,一般情況在使用者量不是太大的情況下,幾百個或者一千甚至幾千的連接配接數都是正常,這個你要根據你們實際的業務來判斷。如果跟正常的連接配接數差不多但通路特别慢得話,可能是程式代碼有問題,這時候要及時聯系開發一起來分析問題的原因;比如用strace來跟蹤nginx程序看一下具體的原因。假如有大量的tcp連接配接(一般都會上萬),并且狀态為SYN_RECV的特别多,恭喜你,你的伺服器很可能是受到攻擊了。有過類似經曆的朋友可能會說在伺服器遭到這個規模的sync攻擊時netstat根本就沒響應,甚至把一個cpu打滿。别急,這裡有一個比較時髦的指令ss,這個時候你用 ss加上at參數可以很快把tcp的連接配接情況顯示出來。 然後就可以用我原來寫得iptables文章中得防DDOS的腳本來阻止這些ip的通路就ok了。如果是個别伺服器響應慢得話就得具體分析了。這個我會專門寫個如何判斷伺服器負載大的文章來專門分析這個情況。暫時想到的就這麼多,大家有想到的可以再告訴我,我再補充,大家一起提高。不早了,睡覺了,明天還得上班呢....

    對了大家覺得如果對自己還有那麼一點點幫助的,希望大家多點贊,多評論,感謝!!!大家可以加入運維交流群:325525293 來一起交流。

繼續閱讀