天天看點

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

【1】TCP/UDP 性能

iperf 安裝

# Ubuntu
sudo apt-get install iperf3
# CentOS
sudo yum install iperf3
           

【1.1】TCP 性能測試

iperf 指令 -- TCP

TCP 性能測試

服務端
# -s表示啟動服務端,-i表示彙報間隔,-p表示監聽端口
$ iperf3 -s -i 1 -p 10000

用戶端
# -c表示啟動用戶端,192.168.0.30為目标伺服器的IP
# -b表示目标帶寬(機關是bits/s)
# -t表示測試時間
# -P表示并發數,-p表示目标伺服器監聽端口
$ iperf3 -c 192.168.0.30 -b 1G -t 15 -P 2 -p 10000
           

iperf 測試結果 -- TCP

服務端

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

用戶端

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

【1.2】UDP 性能測試

iperf 指令 -- UDP

UDP 性能測試

服務端
# -s表示啟動服務端,-i表示彙報間隔,-p表示監聽端口
$ iperf3 -s -i 1 -p 10000

用戶端
# -c表示啟動用戶端,192.168.0.30為目标伺服器的IP
# -u表示UDP協定
# -b表示目标帶寬(機關是bits/s)
# -t表示測試時間
# -P表示并發數,-p表示目标伺服器監聽端口
$ iperf3 -c 192.168.0.30 -u -b 10M -t 15 -P 2 -p 10000
           

iperf 測試結果 -- UDP

服務端

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

用戶端

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

【2】HTTP 測試

ab 指令

ab 是 Apache 自帶的 HTTP 壓測工具,主要測試 HTTP 服務的每秒請求數、請求延遲、吞吐量以及請求延遲的分布情況等;

ab 安裝

# Ubuntu
$ sudo apt-get install -y apache2-utils
# CentOS
$ sudo yum install -y httpd-tools
           

使用 ab 測試 nginx 性能

# -c表示并發請求數為1000,-n表示總的請求數為10000
ab -c 1000 -n 10000 http://172.16.3.50/
           
【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試
  • ab 的測試結果分為請求彙總、連接配接時間彙總、請求延遲彙總
    • 請求彙總
      • Requests per second 為 18940.72;
      • 每個請求的延遲 (Time per request) 分為兩行
        • 第一行的 52.796 ms 表示平均延遲,包括了線程運作的排程時間和網絡請求響應時間
        • 第二行的 0.053 ms 則表示實際請求的響應時間
      • Transfer rate 表示吞吐量 (BPS) 為 15629.79 KB/s
    • 連接配接時間彙總分别展示了建立連接配接、請求、等待以及彙總等的各類時間,包括最小、最大、平均以及中值處理時間
    • 請求延遲彙總展示不同時間段内處理請求的百分比,比如 90% 的請求都可以在 145 ms 内完成

【3】應用負載性能

wrk 指令

wrk 是 HTTP 性能測試工具,内置 LuaJIT 友善根據實際需求,生成所需的請求負載,或者自定義響應的處理方法;

wrk 編譯安裝

下載下傳路徑
https://github.com/wg/wrk
解壓
sudo unzip wrk-master.zip
進入目錄
cd ./wrk-master
編譯安裝
apt-get install build-essential -y
make
sudo cp wrk /usr/local/bin/
           

使用 wrk 測試 nginx

# -c表示并發連接配接數1000,-t表示線程數為2
wrk -c 1000 -t 2 http://172.16.3.50/
           
【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試
  • 使用 2 個線程、并發 1000 連接配接,重新測試了 Nginx 的性能,可以看到,每秒請求數為 25717,吞吐量為 20.85 MB,平均延遲為 181.77 ms;

wrk 最大的優勢是其内置的 LuaJIT,可以用來實作複雜場景的性能測試;wrk 在調用 Lua 腳本時,可以将 HTTP 請求分為三個階段,即 setup、running、done;

【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試【Linux 性能優化系列】Linux 性能優化 -- 網絡性能篇(一) 各協定層性能測試

參考緻謝

本部落格為部落客的學習實踐總結,并參考了衆多部落客的博文,在此表示感謝,部落客若有不足之處,請批評指正。

【1】極客時間 -- Linux 性能優化實戰

【2】iperf3常用指令