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

【虹科干貨】網(wǎng)絡延遲的源頭解決方法-管理延遲

評論