網站響應慢的原因分析

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

    第一個方面,網絡問題。網絡問題可能細分爲幾種,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 來一起交流。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章