帶寬、延時、吞吐率、PPS

2020-12-21 酷扯兒

本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】經微信公眾號授權轉載,如需轉載與原文作者聯繫

Linux 網絡協議棧是根據 TCP/IP 模型來實現的,TCP/IP 模型由應用層、傳輸層、網絡層和網絡接口層,共四層組成,每一層都有各自的職責。

應用程式要發送數據包時,通常是通過 socket 接口,於是就會發生系統調用,把應用層的數據拷貝到內核裡的 socket 層,接著由網絡協議棧從上到下逐層處理後,最後才會送到網卡發送出去。

而對於接收網絡包時,同樣也要經過網絡協議逐層處理,不過處理的方向與發送數據時是相反的,也就是從下到上的逐層處理,最後才送到應用程式。

網絡的速度往往跟用戶體驗是掛鈎的,那我們又該用什麼指標來衡量 Linux 的網絡性能呢?以及如何分析網絡問題呢?

這次,我們就來說這些。

性能指標有哪些?

通常是以 4 個指標來衡量網絡的性能,分別是帶寬、延時、吞吐率、PPS(Packet Per Second),它們表示的意義如下:

帶寬,表示鏈路的最大傳輸速率,單位是 b/s (比特 / 秒),帶寬越大,其傳輸能力就越強。延時,表示請求數據包發送後,收到對端響應,所需要的時間延遲。不同的場景有著不同的含義,比如可以表示建立 TCP 連接所需的時間延遲,或一個數據包往返所需的時間延遲。吞吐率,表示單位時間內成功傳輸的數據量,單位是 b/s(比特 / 秒)或者 B/s(字節 / 秒),吞吐受帶寬限制,帶寬越大,吞吐率的上限才可能越高。PPS,全稱是 Packet Per Second(包 / 秒),表示以網絡包為單位的傳輸速率,一般用來評估系統對於網絡的轉發能力。當然,除了以上這四種基本的指標,還有一些其他常用的性能指標,比如:

網絡的可用性,表示網絡能否正常通信;並發連接數,表示 TCP 連接數量;丟包率,表示所丟失數據包數量佔所發送數據組的比率;重傳率,表示重傳網絡包的比例;你可能會問了,如何觀測這些性能指標呢?不急,繼續往下看。

網絡配置如何看?

要想知道網絡的配置和狀態,我們可以使用

ifconfig

或者

ip

命令來查看。

這兩個命令功能都差不多,不過它們屬於不同的軟體包,

ifconfig

屬於

net-tools

軟體包,

ip

屬於

iproute2

軟體包,我的印象中

net-tools

軟體包沒有人繼續維護了,而

iproute2

軟體包是有開發者依然在維護,所以更推薦你使用

ip

工具。

學以致用,那就來使用這兩個命令,來查看網口

eth0

的配置等信息:

雖然這兩個命令輸出的格式不盡相同,但是輸出的內容基本相同,比如都包含了 IP 地址、子網掩碼、MAC 地址、網關地址、MTU 大小、網口的狀態以及網路包收發的統計信息,下面就來說說這些信息,它們都與網絡性能有一定的關係。

第一,網口的連接狀態標誌。其實也就是表示對應的網口是否連接到交換機或路由器等設備,如果

ifconfig

輸出中看到有

RUNNING

,或者

ip

輸出中有

LOWER_UP

,則說明物理網路是連通的,如果看不到,則表示網口沒有接網線。

第二,MTU 大小。默認值是

1500

字節,其作用主要是限制網絡包的大小,如果 IP 層有一個數據報要傳,而且數據幀的長度比鏈路層的 MTU 還大,那麼 IP 層就需要進行分片,即把數據報分成乾片,這樣每一片就都小於 MTU。事實上,每個網絡的鏈路層 MTU 可能會不一樣,所以你可能需要調大或者調小 MTU 的數值。

第三,網口的 IP 地址、子網掩碼、MAC 地址、網關地址。這些信息必須要配置正確,網絡功能才能正常工作。

第四,網路包收發的統計信息。通常有網絡收發的字節數、包數、錯誤數以及丟包情況的信息,如果

TX

(發送) 和

RX

(接收) 部分中 errors、dropped、overruns、carrier 以及 collisions 等指標不為 0 時,則說明網絡發送或者接收出問題了,這些出錯統計信息的指標意義如下:

errors表示發生錯誤的數據包數,比如校驗錯誤、幀同步錯誤等;dropped表示丟棄的數據包數,即數據包已經收到了 Ring Buffer(這個緩衝區是在內核內存中,更具體一點是在網卡驅動程序裡),但因為系統內存不足等原因而發生的丟包;overruns表示超限數據包數,即網絡接收/發送速度過快,導致 Ring Buffer 中的數據包來不及處理,而導致的丟包,因為過多的數據包擠壓在 Ring Buffer,這樣 Ring Buffer 很容易就溢出了;carrier表示發生 carrirer 錯誤的數據包數,比如雙工模式不匹配、物理電纜出現問題等;collisions表示衝突、碰撞數據包數;

ifconfig

ip

命令只顯示的是網口的配置以及收發數據包的統計信息,而看不到協議棧裡的信息,那接下來就來看看如何查看協議棧裡的信息。

socket 信息如何查看?

我們可以使用

netstat

或者

ss

,這兩個命令查看 socket、網絡協議棧、網口以及路由表的信息。

雖然

netstat

ss

命令查看的信息都差不多,但是如果在生產環境中要查看這類信息的時候,儘量不要使用

netstat

命令,因為它的性能不好,在系統比較繁忙的情況下,如果頻繁使用

netstat

命令則會對性能的開銷雪上加霜,所以更推薦你使用性能更好的

ss

命令。

從下面這張圖,你可以看到這兩個命令的輸出內容:

可以發現,輸出的內容都差不多, 比如都包含了 socket 的狀態(State)、接收隊列(Recv-Q)、發送隊列(Send-Q)、本地地址(Local Address)、遠端地址(Foreign Address)、進程 PID 和進程名稱(PID/Program name)等。

接收隊列(Recv-Q)和發送隊列(Send-Q)比較特殊,在不同的 socket 狀態。它們表示的含義是不同的。

當 socket 狀態處於

Established

時:

Recv-Q表示 socket 緩衝區中還沒有被應用程式讀取的字節數;Send-Q表示 socket 緩衝區中還沒有被遠端主機確認的字節數;而當 socket 狀態處於

Listen

時:

Recv-Q表示全連接隊列的長度;Send-Q表示全連接隊列的最大長度;在 TCP 三次握手過程中,當伺服器收到客戶端的 SYN 包後,內核會把該連接存儲到半連接隊列,然後再向客戶端發送 SYN+ACK 包,接著客戶端會返回 ACK,服務端收到第三次握手的 ACK 後,內核會把連接從半連接隊列移除,然後創建新的完全的連接,並將其增加到全連接隊列 ,等待進程調用

accept()

函數時把連接取出來。

半連接隊列與全連接隊列

也就說,全連接隊列指的是伺服器與客戶端完了 TCP 三次握手後,還沒有被

accept()

系統調用取走連接的隊列。

那對於協議棧的統計信息,依然還是使用

netstat

ss

,它們查看統計信息的命令如下:

ss

命令輸出的統計信息相比

netsat

比較少,

ss

只顯示已經連接(estab)、關閉(closed)、孤兒(orphaned) socket 等簡要統計。

netstat

則有更詳細的網絡協議棧信息,比如上面顯示了 TCP 協議的主動連接(active connections openings)、被動連接(passive connection openings)、失敗重試(failed connection attempts)、發送(segments send out)和接收(segments received)的分段數量等各種信息。

網絡吞吐率和 PPS 如何查看?

可以使用

sar

命令當前網絡的吞吐率和 PPS,用法是給

sar

增加

-n

參數就可以查看網絡的統計信息,比如

sar -n DEV,顯示網口的統計數據;sar -n EDEV,顯示關於網絡錯誤的統計數據;sar -n TCP,顯示 TCP 的統計數據比如,我通過

sar

命令獲取了網口的統計信息:

它們的含義:

rxpck/stxpck/s分別是接收和發送的 PPS,單位為包 / 秒。rxkB/stxkB/s分別是接收和發送的吞吐率,單位是 KB/ 秒。rxcmp/stxcmp/s分別是接收和發送的壓縮數據包數,單位是包 / 秒。對於帶寬,我們可以使用

ethtool

命令來查詢,它的單位通常是

Gb/s

或者

Mb/s

,不過注意這裡小寫字母

b

,表示比特而不是字節。我們通常提到的千兆網卡、萬兆網卡等,單位也都是比特(bit)。如下你可以看到, eth0 網卡就是一個千兆網卡:

$ ethtool eth0 | grep SpeedSpeed: 1000Mb/s

連通性和延時如何查看?

要測試本機與遠程主機的連通性和延時,通常是使用

ping

命令,它是基於 ICMP 協議的,工作在網絡層。

比如,如果要測試本機到

192.168.12.20

IP 地址的連通性和延時:

顯示的內容主要包含

icmp_seq

(ICMP 序列號)、

TTL

(生存時間,或者跳數)以及

time

(往返延時),而且最後會匯總本次測試的情況,如果網絡沒有丟包,

packet loss

的百分比就是 0。

不過,需要注意的是,

ping

不通伺服器並不代表 HTTP 請求也不通,因為有的伺服器的防火牆是會禁用 ICMP 協議的。

相關焦點

  • 帶寬、延時、吞吐率、PPS 這些都是啥?
    通常是以 4 個指標來衡量網絡的性能,分別是帶寬、延時、吞吐率、PPS(Packet Per Second),它們表示的意義如下:帶寬,表示鏈路的最大傳輸速率,單位是 b/s (比特 / 秒),帶寬越大,其傳輸能力就越強。延時,表示請求數據包發送後,收到對端響應,所需要的時間延遲。
  • 低延時、強同步、低帶寬成直播業關鍵 聲網發布新產品填補空白
    經濟日報-中國經濟網北京12月11日訊 直播成為當下主流的社交與媒介方式,隨著直播+場景的爆發,低延時、強同步、低帶寬等已成為直播平臺提升用戶體驗、優化成本的關鍵技術因素。聲網Agora教育行業、極速直播產品負責人仇媛媛表示,根據實時互動的強弱程度以及對延時的不同要求,聲網將互動體驗分為四個級別:強互動、中互動、輕互動、弱互動。強互動延時小於400ms,中互動延時在400-800ms之間,輕互動延時在800ms-3s之間,弱互動延時在3s以上。
  • 愛奇藝pps怎麼使用 愛奇藝pps用法及與愛奇藝區別【詳解】
    有時我們看視頻時,發現怎麼有愛奇藝pps影音了,愛奇藝pps怎麼使用? 愛奇藝pps和愛奇藝有什麼區別?相信這是大家很好奇的事情,愛奇藝收購了PPS,就是我們現在看到的愛奇藝pps影音。  愛奇藝和pps有什麼關係 愛奇藝pps影音合併  百度宣布以3.7億美元現金收購PPS視頻業務,並將其與百度旗下視頻網站愛奇藝合併。  2013年5月27日,愛奇藝正式宣布,與PPS團隊的整合工作全部完成。合併後的愛奇藝在財務、法律、人事層面實現統一管理。愛奇藝高級營銷副總裁王湘君升任首席營銷官(CMO),全面負責愛奇藝和PPS品牌管理、廣告銷售工作。
  • 如何計算工業交換機的背板帶寬,有什麼方法
    工業交換機的背板帶寬,是工業交換機插口CPU或接口卡和系統總線間能夠吞吐量的較大信息量。背板帶寬標示了工業交換機總的數據傳輸工作能力,單位為Gbps,也叫互換網絡帶寬,一般的工業交換機的背板帶寬從幾Gbps到幾百Gbps不一。一臺工業交換機的背板帶寬越高,能夠解決數據信息的工作能力就越強,但另外設計方案成本費也會越高。 一般來講,計算方式以下: 1)線速的背板帶寬 調查工業交換機上全部埠號能出示的總網絡帶寬。
  • 聲網發布極速直播、低碼高清技術 可節省50%帶寬成本
    隨著直播+場景的爆發,低延時、強同步、低帶寬等已成為直播平臺提升用戶體驗、優化成本的關鍵技術因素。聲網Agora教育行業、極速直播產品負責人仇媛媛目前直播市場主流的直播解決方案主要集中在以聲網互動直播為代表的「中互動」直播方案,以及傳統CDN直播的「弱互動」直播方案。聲網Agora此次推出的極速直播填補了輕互動的直播方案空白。
  • 聲網發布極速直播、低碼高清兩大新品 可節省50%帶寬成本
    12月10日,聲網Agora在北京發布了首款定義輕互動直播場景的「極速直播」與可降低50%直播帶寬成本的「低碼高清」兩大新產品,同時聲網還對面向智能硬體、VR/AR等自編解場景的「實時碼流加速產品-RTSA」進行全新升級。
  • 愛奇藝PPS影音
    愛奇藝PPS影音簡介 愛奇藝PPS影音是全球第一家集P2P直播點播於一身的網絡電視軟體,愛奇藝pps
  • 聲網發布低碼高清等產品 可降低50%直播帶寬成本
    強互動:延時小於400ms,屬於全實時互動,對(可感知)延時的容忍度為零,如全程需要通過音視頻進行實時互動、連麥或會議的場景。  中互動:延時在400-800ms之間,屬於超低延時互動直播,對延時容忍度較低,觀眾需要與主播保持較強同步性,隨時需要與主播連麥的場景。
  • 愛奇藝pps是什麼 和愛奇藝視頻app有什麼區別介紹
    愛奇藝和pps已經合併了,你下載愛奇藝視頻,它會自動給你升級成「愛奇藝PPS影音「的。(愛奇藝是百度的,愛奇藝pps是整合在一起的,相當於合併) 原標題:愛奇藝pps和愛奇藝有什麼區別 愛奇藝pps怎麼取消自動續費 責任編輯:曾少林
  • 高帶寬戶外單兵數據回傳方案:聚合路由器穩定供網
    高帶寬:系統增加單位時間的數據通行量,網絡情況較差時尤為體現。不僅具有5G高速率、高接入、低延時的優勢,還兼容4G、3G高覆蓋優勢,是5G時代商用的最優通訊解決方案。 高移動:系統組網靈活,適應性強,可隨時隨地為各種應用場景提供通訊網絡。
  • SRT傳輸技術可實現幾毫秒到幾秒的低延時網際網路傳輸
    SRT是時下最熱門的網際網路點對點視頻傳輸協議,具備低延時、穩定可靠傳輸的優勢特性,特別適合異地多方音視頻互動場景。SRT是一種能夠在複雜網絡環境下實時、準確地傳輸數據流的網絡傳輸技術,它在傳輸層使用UDP協議,具備UDP速度快、開銷低的傳輸特性,支持點對點傳輸,無需中間伺服器中轉,可實現幾毫秒到幾秒的低延時網際網路傳輸。
  • 騰訊雲推出首款自研H265硬體編碼器瑤池,助力雲遊戲降低15%帶寬
    據了解,作為騰訊雲首款自研H265 硬體編碼器,瑤池V500 能充分滿足雲遊戲低時延高吞吐的需求,在同等畫質情況下,可以實現帶寬佔用降低15%,如果是在同等帶寬條件下,則能夠大幅提升畫質。雖然近幾年來帶寬在不斷增加,但高畫質視頻傳播的需求也越來越強烈,視頻編碼壓縮技術正是通過壓縮原始視頻數據量,在有限帶寬下傳輸高畫質視頻的主要手段。
  • 延時攝影:拍攝延時作品,了解這三個關鍵點,提升延時作品表現力
    本篇文章帶大家學習延時攝影技巧。#攝影新手學習延時攝影,先從簡單的主題開始延時攝影的長短並沒有一個標準,素材少,可以幾秒鐘做圖片用,素材多可以做幾十分鐘的視頻用,但視頻的時間越長越難取材,需要考慮考慮環境的變化,對於新手而言,不建議從多素材、長時間的主題入手,例如,不建議拍日出日落,這種題材就需要好幾個小時。
  • iphone延時攝影怎麼拍的具體教程及延時攝影介紹
    而逐漸開始開放的蘋果IOS系統,也越來越多的增加了不少的新功能,下面小編就為大家介紹蘋果手機中的延時攝影相關的介紹以及使用方法。   延時拍攝介紹  延時攝影又叫縮時攝影,又稱縮時錄影。是以一種將時間壓縮的拍攝技術,目前也多叫作縮時錄影。
  • 顛覆性延時產品岡島男士延時膏走紅,讓「愛」更持久!
    有沒有既安全效果又比較理想的延時方法呢?隨著一款名為岡島男士延時膏產品的流行,困擾諸多男性的早洩問題迎刃而解。據悉,岡島男士延時膏是一款顛覆性的延時產品,它由日本一流的研發團隊歷經多年時間研製而成,與市面上的延時產品有非常大的區別,該產品中的主要成分為無添加生態草本植物提取物、卡圖巴多肽、牡蠣多肽、海參肽、鹿茸多肽、瑪卡多肽等成分
  • 手機拍延時,怎麼玩才炫酷?教你用手機拍延時攝影
    天空的雲捲雲舒、鬥轉星移、日出日落、移動的光線、車流人群流動,甚至花開花落都可以用延時攝影的拍攝手法來記錄這一瞬時變化。延時攝影在電視、電影中應用也較為常見,其壓榨空間的手法,往往表現時間快速流逝的意境。什麼是延時攝影?
  • 香港伺服器租用如何選擇適合的帶寬
    關於租用香港伺服器帶寬,相信有不少用戶都有疑問。下面我們就來聊聊租用香港伺服器帶寬常見的問題。眾所周知,伺服器帶寬過小會造成網絡擁堵,影響用戶體驗。無論高訪問量的資源下載站,還是個人博客網站,如果選擇的伺服器帶寬不足以滿足當前訪問量負載,都可能造成網站訪問速度慢、網站無響應、頁面打不開等。那麼租用香港伺服器如何選擇帶寬網絡呢如上所述,選擇香港伺服器帶寬的關鍵在於,一定要匹配網站的用戶量、訪問量、訪問峰值和穩定性要求。因此,我們首先應當分析自身網站和業務發展的需求,再著手選擇香港伺服器帶寬。