【運籌帷幄】網站打開慢故障排查思路

大家好,我是高勝寒,本文是【運籌帷幄】系列的的第1講,【運籌帷幄】系列主要討論在公司中經常遇到的那些棘手問題,帶你一起打怪升級,系統的闡述解決問題的思路和方法。

運籌帷幄之中,決勝千里之外,我是高勝寒,今天我們一起聊聊網站打不開以及網站訪問慢的故障處理方案。

前言

我們思考一個問題之前,先要考慮的是解決問題的思路,但解決問題的思路一般需要對一個系統或者產品有足夠的認識才可以。

所以我一直給大家強調的知識體系,包括訪問網站的詳細流程,其實都是在解決遇到問題如何去思考的問題。

想知道爲什麼網站打開慢,或者無法訪問,我們得先清楚一個網站的訪問流程到底是什麼樣子。

網站訪問流程(故事版)

我們的主角小王,是個活雷鋒,哪裏需要哪裏搬,今天他又來了。

小王打開了自己的百度瀏覽器,輸入www.baidu.com,按下回車,等了一會,就打開了網頁,小王很困惑,在敲下回車的一瞬間,電腦到底做了什麼?

爲了一探究竟,小王打開百寶箱,並念出了那句開啓百寶箱的咒語(我是高勝寒,關注我,有更多精彩內容哦)。百寶箱閃出一個耀眼光芒,小王眼前一黑,過了好一會兒小王醒纔過來,醒過來後發現自己被困在了電腦裏,一個美女正在電腦前跟閨蜜聊着天。突然美女像是想起了什麼,她飛快的打開瀏覽器,輸入了www.taobao.com

小王的身體突然就不聽使喚,直奔電腦的host文件飛去, 小王這才明白,百寶箱把自己變成了一個用戶請求,根據請求的處理流程,小王飛快的看了一眼host,發現文件中已經有www.taobao.com對應的ip地址,於是獲取到ip,直接扔給了美女,美女很開心的購起物來。

小王正要好好欣賞一下眼前的美人,QQ上一個消息彈出,是一個不常見的網址,www.wsmv.com 美女想也沒想,直接打開, 小王立即趕往host查看網址對應的ip,結果發現host裏沒有對應的ip。小王心想,這應該是美女第一次打開這個網站,所以電腦裏沒有緩存。

既然在host裏沒有找到,小王趕緊詢問了下週邊忙碌的其他請求,接下來該怎麼辦,一個看上去很老成的nginx請求路過,指了指旁邊的路由器(在你的城市的某個角落,但是不會太遠)說,“諾,那個是本地域名服務器,你去向他尋求幫助吧”

小王飛奔過去,向本地DNS服務器詢問是否有剛剛美女輸入的網址的ip, 本地DNS快速掃描了下,發現沒有,但給出了提示,可以去根服務器去問問。

小王來到根服務器,小王問,有沒有www.wsmv.com對應的ip, 根域緩緩的答道,“我這邊沒有,但是我有.com.的服務器地址,你可以去問問他”,說着根域服務器甩出了 一條信息,上面寫在.com服務器的ip地址。

小王又馬不停蹄的根據ip找到對應的.com服務器,詢問是否有美女輸入的網站ip的地址, .com服務器頭也沒擡的回了一句:“又是根域讓你來的吧,我這邊有wsnv.com對應的ip地址,你可以直接去,但是我們這有個不成文的規定,不是所有人都可以隨便訪問服務器的,IP給你,接下來能不能請求到資源還得靠你自己”

小王拿到了 wsnv.com的ip地址正要進去獲取數據,卻被一個叫TCP協議擋住了去路。小王知道這是要進行TCP連接了, 需要與服務器進行三次對話,跟對暗號一樣,通過後才能獲取數據。

但是要進行TCP連接,小王得先把消息成功的發送到服務器上,小王根據書中講的準備了IP協議,ARP協議和OSPF協議, IP地址只指定了美女的PC的ip和剛從.com獲得的要登陸網站的ip地址, 然後經過一個個路由器傳送給服務器,然後進行了tcp的鏈接。

連接成功了,小王興奮的跳了起來,能給美女獲取到數據是小王最開心的事情。 but,小王聽到一個聲音 “恭喜你,成功跟tcp進行了鏈接,現在你可以尋求HTTP協議的幫助來請求網頁了,請先熟悉HTTP協議的請求規則”

小王趕緊查看HTTP請求規則,規則裏有條重要提示: 雖然你通過了tcp協議,但是還是有被服務器拒絕的可能,如果服務器拒絕了你的請求會返回"Forbiden",如果服務器沒有拒絕,能夠正常訪問,就返回200OK,然後纔會給你傳輸數據。

小王連忙根據規則發送HTTP請求報文給服務器,經過了硬件防火牆,到了負載均衡,又通過負載均衡到了web,後面又有緩存,最後纔到數據庫。成功了,小王收到了服務器的回覆,接收到一堆HTML形式的文本。然後快速返回到美女的電腦,當然也沒忘了在本地緩存上存一份,畢竟下次再按這個流程走一遍,小王會累死的。

在本地緩存好之後,小王把接收的文本給了瀏覽器,瀏覽器是個聰明的傢伙,很快就翻譯出來,並渲染到屏幕上,看到屏幕前美女開心的笑容,小王感覺好滿足,順便瞅了一眼瀏覽器,不看不要緊,一看嚇一跳,瀏覽器上是美女男朋友發來的禮物,滿屏的煙花和一句我愛你。

小王的心突然疼了一下,原來有男朋友啊,那我這還忙活的這麼起勁,算了,百寶箱帶我回去吧。

隨着一陣耀眼的光芒,小王最後看了一眼美女,戀戀不捨的離開了。

小王回來後,快速整理了今天的見聞,愛學習的小王在筆記本上寫到:美女(此處劃掉)

小王又重新寫到: 用戶發起一個請求到最終落地數據,中間經歷了:

用戶(電腦,網絡,本地緩存)–域名服務器–tcp三次握手 --HTTP協議

進入了HTTP協議之後,小王回憶了下,先是看到了硬件防火牆F5,然後是請求發給了負載均衡nginx, nginx轉發給了其中的tomcat,tomcat有相應的配置文件,根據配置文件搜索相應的資源-好像在獲取資源的時候還遇到了緩存redis,然後纔是訪問數據庫,這一圈下來好麻煩。

既然知道了整個的訪問流程,我們接下來要看看如何排查網站訪問慢問題:

如何排查問題

如果客戶說訪問web網站慢
  • 主動訪問web網站,看是否訪問慢,使用公司的遠程服務器訪問網站看是否會有慢的情況。
  • 如果並沒有慢的情況,說明是客戶那邊的網絡有問題
    可以使用ping命令,檢查A網站的IP連通性,如果丟包嚴重,訪問速率也會變低。
如果你訪問網站發現的確訪問速度很慢,這時候你需要排查網站慢的原因
1) 檢查網站服務器是否異常
   - 檢查服務器的cpu,內存,io,磁盤,網絡的使用情況
   -  檢查是否有某個進程佔用資源比較多的情況
   - 檢查是否有惡意訪問造成的消耗資源比較多的情況
2) 檢查與網站相關聯的服務是否異常

a) 網站與數據庫的連接是否變慢

可以 在數據庫裏查看負載,查看慢查詢
在這裏插入圖片描述

在這裏插入圖片描述
目前關閉的,我們需要開啓profiling

mysql> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

獲取某一個query_ID在執行過程中的profile
在這裏插入圖片描述
在這裏插入圖片描述

b) 網站與存儲的訪問是否變慢
c) 查看負載均衡到web是否變慢
d) 在web網站上放一個靜態網頁/php動態查看是動態數據慢還是靜態數據慢

3) 使用chrome瀏覽器開發者工具排查網站打開慢的情況

a. 打開谷歌瀏覽器,鍵盤上輸入F12,打開開發者工具
在這裏插入圖片描述

b. 選擇【network】-ctrl+F5 強制刷新,查看資源的加載情況

點擊time進行排序,會找到消耗時間最長的資源
在這裏插入圖片描述

其他可能的原因

  1. 遭遇流量攻擊,比如DDos, CC攻擊,這種只能用帶寬去抗,或者採購流量清洗服務,也可以使用CDN服務隱藏源站IP。

  2. 域名問題,比如域名解析不正常,過期。

  3. 死鏈問題,網站改版或者升級後,殘留下來的不存在的頁面,而這些頁面又被百度給收錄了,用戶通過這些頁面登陸會出現空白或者打不開。 我們可以將死鏈加入404文件並提交給百度站長平臺。

  4. 圖片太多也會導致網站速度過慢,解決方案就是使用圖牀,或者使用類似阿里雲的OSS,集中存儲圖片。

  5. 訪問量過高,併發過大,也會導致服務器卡頓,這個時候可以考慮加緩存或增加服務器。

  6. 程序問題,網站存在大量的js調用, 解決方法就是充分利用服務器端的緩存設置和瀏覽器端的緩存設置。

總結

網站打開慢的原因有很多,並沒有標準的答案,所有可能出現瓶頸的地方,都有可能是網站訪問慢的原因。

但總結下來,無非就是,網絡問題: 系統問題,數據庫問題, 訪問慢的服務器與其他關聯的服務器或者服務的調用之間出現了問題,被攻擊。

問題就是機遇,我是高勝寒,一個在教培行業不忘初心的人。 我們下篇文章見!

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