概述

Ethr 是一个用 golang 编写的跨平台网络性能测量工具。该项目的目标是提供一个本地工具,用于跨 TCP、UDP、HTTP、HTTPS 等多种协议以及跨多个平台的带宽、连接/秒、数据包/秒、延迟、丢失和抖动的全面网络性能测量; Ethr 支持多线程,这允许它扩展到 1024 甚至更多的连接数,多个客户端与单个服务器通信等; 用于延迟测量,它类似于 Windows 上的 latte 或 Linux 上的 sockperf

1、ethr 二进制安装

wget https://github.com/microsoft/ethr/releases/download/v1.0.0/ethr_linux.zip
unzip ethr_linux.zip
mv ethr /usr/local/bin && chmod +x ethr

2、ethr 命令行常见选项

-t 指定测试类型, 取值包括 b 带宽  c 每秒连接数  p 每秒包数  l 延迟、损耗和抖动  pi Ping 丢失和延迟
-x 指定适用于到目标站点的网络测试
-n 并发会话/线程数, 0 设置为当前 cpu 数
-d 测试时长, 0 不限时
-p 指定测试时的协议类型, 取值 tcp、udp 等

网络带宽

// 启动服务端
ethr -s -port 5203

// 带宽测试
ethr -c 192.168.31.11 -port 5203 -t b -d 1m
> Using destination: 192.168.31.11, ip: 192.168.31.11, port: 5203
> [  5] local 192.168.31.16 port 30961 connected to 192.168.31.11 port 5203
> - - - - - - - - - - - - - - - - - - - - - - -
> [  ID ]   Protocol    Interval      Bits/s
> [    5]     TCP      000-001 sec    15.49G
> [    5]     TCP      001-002 sec    18.59G
> [    5]     TCP      002-003 sec    15.20G
> [    5]     TCP      003-004 sec    15.48G
> [    5]     TCP      004-005 sec    17.46G
> [    5]     TCP      005-006 sec    16.17G
> [    5]     TCP      006-007 sec    16.11G
> [    5]     TCP      007-008 sec    16.30G

每秒转发包数

// 启动服务端
ethr -s -port 5203

// UDP 每秒包转发数 压测
ethr -c 192.168.31.11 -port 5203 -t p -p udp -n 0 -d 0
> Using destination: 192.168.31.11, ip: 192.168.31.11, port: 5203
> Protocol    Interval      Bits/s    Pkts/s
>   UDP      000-001 sec    50.77M     6.35M
>   UDP      001-002 sec    52.93M     6.62M
>   UDP      002-003 sec    55.81M     6.98M
>   UDP      003-004 sec    52.76M     6.59M
>   UDP      004-005 sec    51.86M     6.48M
>   UDP      005-006 sec    55.79M     6.97M
>   UDP      006-007 sec    54.71M     6.84M
>   UDP      007-008 sec    55.80M     6.97M
>   UDP      008-009 sec    53.74M     6.72M
>   UDP      009-010 sec    51.79M     6.47M
>   UDP      010-011 sec    51.09M     6.39M
>   UDP      011-012 sec    51.88M     6.49M
// 测试结论: 每秒包转发数 65w,
// 备注: 暂不支持 TCP 协议的 PPS 压测

每秒新建连接数

// 启动服务端
ethr -s -port 5203

// 每秒新建 tcp 连接数测试
ethr -c 192.168.31.11 -port 5203 -t c -p tcp -d 1m -n 0
> Using destination: 192.168.31.11, ip: 192.168.31.11, port: 5203
> Protocol    Interval      Conn/s
>   TCP      000-001 sec    53.63K
>   TCP      001-002 sec    63.17K
>   TCP      002-003 sec    59.12K
>   TCP      003-004 sec    51.59K
>   TCP      004-005 sec    45.38K
>   TCP      005-006 sec    52.47K
>   TCP      006-007 sec    54.58K
>   TCP      007-008 sec    64.67K
>   TCP      008-009 sec    62.43K
>   TCP      009-010 sec    56.70K
>   TCP      010-011 sec    62.75K

网络延时

// 启动服务端
ethr -s -port 5203

// TCP 延时测试
ethr -c 192.168.31.11 -port 5203 -t l -p tcp -d 1m -n 0
> Using destination: 192.168.31.11, ip: 192.168.31.11, port: 5203
> Running latency test: 1000, 1
>       Avg       Min       50%       90%       95%       99%     99.9%    99.99%       Max
> 120.508us  82.948us 112.010us 149.992us 175.457us 243.291us 427.164us 427.164us 544.289us
> 167.457us  82.565us 105.179us 399.238us 615.316us 728.474us 778.789us 778.789us 795.993us
> 116.686us  83.275us 110.900us 147.542us 161.407us 215.930us 370.528us 370.528us 699.011us
> 120.487us  81.468us 112.020us 147.313us 173.125us 265.141us 552.161us 552.161us 844.891us
> 125.260us  95.676us 116.963us 151.482us 179.537us 240.500us 466.104us 466.104us 621.117us
> 122.701us  77.962us 114.985us 152.897us 175.167us 283.537us 537.144us 537.144us 795.253us
> 108.325us  74.415us 103.420us 129.317us 144.962us 193.497us 369.824us 369.824us 805.387us
> 134.934us  81.191us 123.791us 161.572us 218.611us 315.985us 638.850us 638.850us 713.924us
> 140.875us  76.917us 120.009us 169.095us 299.080us 595.553us 653.219us 653.219us 654.012us
> 118.709us  89.973us 108.923us 144.635us 174.059us 266.124us 449.520us 449.520us 609.781us

网站测试

// 站点 ping 延迟
ethr -x http://192.168.31.11 -p icmp -t pi -d 0 -4
> Using destination: 192.168.31.11, ip: 192.168.31.11, port: 80
> [icmp] [warmup] Ping to 192.168.31.11: 577.924us
> [icmp] Ping to 192.168.31.11: 610.218us
> [icmp] Ping to 192.168.31.11: 604.991us
> [icmp] Ping to 192.168.31.11: 683.871us
> [icmp] Ping to 192.168.31.11: 534.377us
> [icmp] Ping to 192.168.31.11: 453.957us
> [icmp] Ping to 192.168.31.11: 512.837us
> [icmp] Ping to 192.168.31.11: 588.904us
> [icmp] Ping to 192.168.31.11: 548.445us
> -----------------------------------------------------------------------------------------
> TCP connect statistics for 192.168.31.11:
>   Sent = 8, Received = 8, Lost = 0
> -----------------------------------------------------------------------------------------
>       Avg       Min       50%       90%       95%       99%     99.9%    99.99%       Max
> 567.200us 453.957us 548.445us 610.218us 610.218us 610.218us 610.218us 610.218us 683.871us
> -----------------------------------------------------------------------------------------


// 站点 tcp 连接延迟
ethr -x http://192.168.31.11 -p tcp -t pi -d 0 -4
> Using destination: 192.168.31.11, ip: 192.168.31.11, port: 80
> [tcp] [warmup] Connection from [192.168.31.16]:6337 to [192.168.31.11]:80: 1.004ms
> [tcp] Connection from [192.168.31.16]:61945 to [192.168.31.11]:80: 792.947us
> [tcp] Connection from [192.168.31.16]:15991 to [192.168.31.11]:80: 811.263us
> [tcp] Connection from [192.168.31.16]:10841 to [192.168.31.11]:80: 873.637us
> [tcp] Connection from [192.168.31.16]:58697 to [192.168.31.11]:80: 951.613us
> [tcp] Connection from [192.168.31.16]:30421 to [192.168.31.11]:80: 936.934us
> [tcp] Connection from [192.168.31.16]:14777 to [192.168.31.11]:80: 764.685us
> [tcp] Connection from [192.168.31.16]:48157 to [192.168.31.11]:80: 788.011us
> [tcp] Connection from [192.168.31.16]:8247 to [192.168.31.11]:80: 920.898us
> -----------------------------------------------------------------------------------------
> TCP connect statistics for [192.168.31.11]:80:
>   Sent = 8, Received = 8, Lost = 0
> -----------------------------------------------------------------------------------------
>       Avg       Min       50%       90%       95%       99%     99.9%    99.99%       Max
> 854.998us 764.685us 811.263us 936.934us 936.934us 936.934us 936.934us 936.934us 951.613us
> -----------------------------------------------------------------------------------------