如何找出特定資源(圖片或庫)減慢頁面載入的原因

如何找出特定資源(圖片或庫)減慢頁面載入的原因

我們有一個小型網路(在高峰工作時間可能有 15 個用戶,大約 30 台設備)管理網路連線和電話線路。

此網路的主要用途是讓使用者存取基於網路的外部託管資料庫接口,透過該接口管理業務(客戶、銷售、發票等)。這個基於 Web 的資料庫介面是一個 php/mysql 應用程序,在過去一年半的時間裡開發。作為主要(如果不是唯一)程式設計師,我可以存取有關此應用程式和我們網路的所有內容,從託管解決方案到原始程式碼再到技術選擇。

幾個月前,我們注意到使用資料庫介面製作的 clis 中有 5% 的速度明顯下降。我的意思是,大多數點擊將在一到兩秒內交付內容,然後,有時,其中一次點擊將需要長達一分鐘的時間來加載。

讓我眼花撩亂的是

  • 它似乎與頁面內容無關。一遍又一遍地加載同一頁面在 95% 的情況下都可以正常工作,有時單擊一下會多花費 1000% 到 2000% 的加載時間。重複載入不同的頁面將得到相同的結果。
  • 網路為基礎的介面從辦公室外部存取時不會減慢速度。也就是說,只有在我們的本地網路後面使用時,它才會減慢速度。
  • 其他網頁似乎沒有變慢,但停止滯後的頁面並重新加載就可以了,這讓我認為它會發生幾秒鐘,阻止在此閾值期間進行的所有點擊,但不會阻止兩秒後進行的點擊
  • 網站使用 jquery 和 jquery-ui,以及其他一些函式庫(jquery cookie master、xdate)。如果它們是從我們的伺服器加載或直接從 jquery 和 ajax.googleapis 加載,則會出現緩慢的情況

面對這一切,我諮詢了網路專業人士,最後我們改變了我們的網路設備,我們現在使用的是cisco asa-5505防火牆和託管的cisco Catalyst交換器。

  • 之前,我們注意到 google.com 的 ping 有時會超時或需要長達 13000 毫秒才能加載,而通常我們的 ping 為 20-30 毫秒
  • 透過諮詢我們的 ISP,我們也注意到我們必須800GB每月上傳數量!我們確實管理照片和大文件,但如果距離正常使用還很遠,就需要 800GB。有一段時間,我們認為高網路上傳流量可能會阻止頁面載入資源。從我們的 ISP 的歷史記錄中我們可以看出,速度緩慢和大量上傳似乎幾乎同時發生。我無法毫無疑問地判斷哪一個先發生,它們似乎都發生在同一周。
  • 顯然我們有很多丟包錯誤
  • 我無法確定緩慢影響了哪些協議。我沒有直接遇到下載失敗的情況,也沒有收到用戶抱怨下載失敗的情況,但透過 netbeans 將檔案上傳到 ftp 會受到影響。然而,用戶習慣transmit將文件傳輸給我們的客戶並返回,我沒有收到有關文件上傳不正確或客戶收到損壞文件的投訴。

可悲的是,我沒有收到投訴並不意味著它沒有發生,因為當時與用戶的溝通有些緊張。我想說的是網路緩慢是造成[雙關語]的原因。

當我們聘請的專家來在網路上安裝新零件時,他們做了一些配置和監控,現在,我們的 ping 恢復正常,並且資料包遺失錯誤發生的頻率要低得多,我們認為這些只是正常的數據包在網路上遺失。另外,從我們所看到的情況來看(才幾天),巨大的上傳已經停止。

但是,5% 的點擊仍然需要大量時間來加載。

我嘗試使用 firebug 的 net 選項卡進行調試,以查看網站的哪一部分加載緩慢。伺服器本身的回應時間在 200-800 毫秒之間,取決於頁面的複雜程度,看起來還不錯。大多數圖像加載正常,庫也是如此,但是當發生緩慢時,這些圖像或庫中的一個或多個將在加載之前永遠等待。它並不總是相同的庫或圖像

我的想法是,不知何故,當加載圖像和庫來顯示頁面時,網路負載將阻止資源正確到達目的地。

我如何確定是什麼阻止了特定資源(無論是圖像還是 js 庫)載入?

我缺乏使用wireshark或其他高級(從我的謙虛的角度來看)網路工具的技術技能,但如果必須的話我會學習它。話雖如此,此時的監控似乎無關緊要,我不想看到它變慢,我知道它很慢。我想知道是什麼阻止資源到達本地網路中的目標計算機

答案1

因此,在沒有實際進入您的網路並與您進行詳細診斷的情況下,這裡的答案可能更像是「為您指明方向」並看看它是否有效。

也就是說,在處理這類事情時,我採取了奧卡姆剃刀方法。

你說:

「從辦公室外部存取時,基於網路的介面不會出現速度減慢的情況。也就是說,只有在本地網路後面使用時,它才會速度減慢。”

如果這一點確實準確的話,那麼這就是需要重點關注的部分。

問題應該出在「本地網路」內的某個地方。它不在外部託管的伺服器/應用程式上,否則可以從另一個位置複製相同的問題。

那麼在哪裡呢?您已經更換了一些網路設備,但似乎沒有效果。

我建議您這樣做,這可能聽起來很簡單,但可以從網路最遠的外部點向後進行:

  1. 採取一台從未在本地 LAN 上、不屬於網域等的筆記型電腦,並將其直接連接到本地網路的 ISP。直接是關鍵。將筆記型電腦直接放在 ISP 的網路上,無需防火牆或類似的混合設備,看看您會得到什麼樣的回應/效能,並將其與您已知的運作良好的外部設定進行比較。
  2. 如果您在步驟 #1 中沒有看到問題,請繼續將筆記型電腦移回一層,直接連接到 ASA 防火牆,然後透過防火牆再次進行測試。
  3. 如果#2 沒有問題,則返回另一層,這次是在託管交換器後面。
  4. 如果#3 沒有問題,那麼您就知道這不是網路問題。

依此類推(嘗試一個在外部有“問題”的客戶端等),直到您至少可以客觀地說出問題發生的原因/地點,即使您不知道原因或具體是什麼導致了問題特定的“層” 。然後,如果您願意,您可以開始更深入地研究該特定“層”。

答案2

您可能需要使用nmap(例如,或wireshark)來檢查本地網絡,它可以幫助您找到一台有病毒並發送數千個垃圾郵件arp 請求的Windows 計算機,或者使用BitTorrent 用戶端的用戶或任何可能使您的網路飽和的東西。

另一個選擇是大多數 ISP 都遠非完美。 。 。也許有時ISP會出現一些丟包或上傳穩定性問題。安裝像smokeping這樣的監控工具,並監控網路上的目標可以幫助你看到這種情況(封包遺失、上傳緩慢、ping慢),並且還可以讓你看到這種情況何時發生(每次約翰·多伊在辦公室並插入他的電源時)計算機到網絡?

相關內容