作者:MobotStone
1、什么是延遲呢?
延遲其實就是我們在網頁瀏覽或者使用應用時,從我們點擊請求到服務器返回結果給我們之間的時間差。就像你在跟朋友打電話,你說完話后,朋友聽到并回應你所說話的時間差一樣。
我們的最終目標是創建一個系統,讓這個時間差變得盡可能短,也就是實現零延遲。但現實世界中,有各種各樣的問題會導致系統出現延遲。如果系統的延遲很低,那么我們請求得到響應的時間就會很短。每次你在瀏覽器中輸入網址或者點擊一個鏈接,瀏覽器都會向服務器發出一個請求信號,然后服務器需要處理這個請求,獲取需要的信息,最后把這些信息返回給你的瀏覽器。整個過程中就會有一些時間差,這就是延遲。所以,我們要不斷努力降低延遲,提高系統的響應速度。
2、延遲是怎么回事呢?
延遲其實就是你在請求后需要等待的時間,就像等待快遞送到家門一樣。來看個例子,更容易理解它是怎么運作的。
想象你正在和一個電子商務網站(比如淘寶)互動,你喜歡一個商品,然后把它加入購物車?,F在,當你點擊“添加到購物車”按鈕時,下面的事情會依次發生:
你點擊了“添加到購物車”按鈕,這時就像你啟動了一個計時器,瀏覽器開始向服務器發請求。
服務器收到請求,然后開始處理它,就像你的快遞訂單到了快遞中心一樣。
服務器處理完后,回應你的請求,信息到達你的瀏覽器,商品成功添加到購物車中,就像你的包裹送到了家門口一樣。
你可以想象在第一步按下了計時器的啟動按鈕,然后在最后一步停下,這段時間就是延遲。希望這個例子能讓你更容易理解延遲是如何運作的。
3、延遲都是怎么來的呢?
現在,你應該已經理解了要點,但是你知道是什么造成了延遲嗎?網絡中的延遲受多種因素影響,它們在確定延遲的具體數值時扮演著關鍵角色。其中一個主要因素是出站呼叫?;氐街疤砑淤徫镘嚨睦?,當你點擊瀏覽器上的按鈕時,請求會發送到后端的某個服務器,這個服務器可能會在內部調用多個服務來進行計算(可能是同時或者按順序),然后等待它們的響應或將它們匯總。所有這些因素都會增加呼叫的延遲。但總結起來,主要由以下幾個因素引起:
傳輸介質:傳輸介質指的是信息在起點和終點之間的物理路徑。系統的延遲會取決于用于傳輸請求的介質類型。廣域網、光纖電纜等傳輸介質都廣泛應用,但每種介質都有自己的限制,這會影響延遲。
傳播延遲:這指的是數據包從一個源傳播到另一個源所需的時間。系統的延遲很大程度上取決于通信節點之間的距離。節點距離越遠,系統的延遲就會越高。
路由器:路由器在通信中扮演著重要的角色,它們需要一些時間來分析數據包的標頭信息。延遲取決于路由器處理請求的效率。每一次路由器到路由器的跳躍都會增加系統的延遲。
存儲延遲:系統的延遲還受到所使用的存儲系統類型的影響,因為處理和返回數據可能需要一些時間。因此,訪問存儲中的數據會增加系統的延遲。
4、如何測量延遲?
要量化延遲其實很簡單,我們有幾種常用的方法,讓我們來看看最常見的三種:
Ping(網絡探測):Ping是測量延遲最常用的工具之一。它的原理是向目標地址發送一個小數據包,然后查看接收到響應所需的時間。更快的Ping意味著連接更敏捷,響應更迅速。
Traceroute(路徑跟蹤):Traceroute是另一個用于測試延遲的工具。它也使用數據包,但不止如此,它還會逐一記錄數據包從源到目的地經過的每個中間節點所需的時間。這有助于識別網絡中的延遲點。
MTR(網絡診斷工具):MTR是Ping和Traceroute的超級組合。MTR提供了詳盡的報告,列出了從一個端點到另一個端點所需的每個網絡節點的信息。這份報告通常包括了各種細節,比如丟包率、平均延遲等,非常有助于分析網絡性能。
5、延遲優化
延遲是系統性能的絆腳石,所以我們需要采取一些措施來進行優化。下面是一些簡單又實用的方法,可以幫助我們減少延遲:
采用HTTP/2:使用HTTP/2協議可以顯著減少延遲。它支持并行傳輸,最大程度地減少了數據從發送方到接收方的往返次數,這對于降低延遲非常有效。
減少外部HTTP請求:第三方服務會增加延遲。通過減少外部HTTP請求的數量,我們可以提高系統的響應速度和質量。
使用CDN:內容分發網絡(CDN)被證明能夠減少延遲。CDN會在全球多個位置緩存資源,從而減少請求和響應的傳輸時間。這意味著可以從更接近客戶端的緩存位置獲取請求,而不必每次都回到原始服務器。
瀏覽器緩存:利用瀏覽器緩存,可以減少向服務器發送的請求次數,從而降低延遲。瀏覽器會在本地緩存特定資源,這對于提高頁面加載速度很有幫助。
優化磁盤I/O:為了減小磁盤I/O的影響,我們需要優化算法,盡量減少頻繁的磁盤寫入操作。可以考慮使用直寫式緩存、內存數據庫,或者在適當的情況下進行寫入合并,還可以考慮使用快速存儲系統,比如SSD。
作為開發人員,我們還可以在應用程序級別采取一些方法來優化延遲:
避免低效算法:高效的算法是代碼中延遲的主要來源之一。要盡量避免不必要的循環或昂貴的嵌套操作。
避免鎖定的設計模式:鎖定會引入延遲,因此我們應該采用避免鎖定的設計模式,特別是在多線程環境中。
采用異步編程模型:異步編程可以更好地利用硬件資源,因為它避免了阻塞操作,從而減少等待時間。
限制無界隊列深度:限制無界隊列深度并提供反壓通??梢詼p少代碼中的等待時間,從而產生更可預測的延遲。
這些方法可以幫助我們優化延遲,提高系統性能,讓用戶獲得更好的體驗。
審核編輯:黃飛
-
服務器
+關注
關注
12文章
9578瀏覽量
86920 -
路由器
+關注
關注
22文章
3789瀏覽量
115468 -
計時器
+關注
關注
1文章
426瀏覽量
33313 -
CDN
+關注
關注
0文章
328瀏覽量
29368
原文標題:網絡延遲簡介:為什么它重要,如何測量
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
如何有效評估SAN網絡延遲(latency)?
怎么實現IGBT延遲導通時間測量系統的設計?
對群延遲測量方法的研究
【虹科干貨】網絡延遲的源頭解決方法-管理延遲

評論