网络性能监控工具整理

网络,性能,监控,工具,整理 · 浏览次数 : 574

小编点评

**Packet Header** | Field Name | Data Type | Description | |---|---|---| | packet_num | Int | Unique identifier for each packet | | send_count | Int | Number of packets sent | | send_freq | Float | Frequency of packet sending (in seconds) | | recv_count | Int | Number of packets received | | recv_freq | Float | Frequency of packet receiving (in seconds) | | thr | Int | Number of threads in the sender thread | | brn | Int | Number of threads in the receiver thread | | mappings | List of mappings | Mapping information for each thread | **Mapping** A mapping is a set of parameters that specify how threads should be distributed across multiple processes. Each mapping consists of the following elements: * Number of threads * Processor number * Receiver address or name **Sample Mapping** ``` -m 4,0,1.2.3.4 2,*,contoso ``` This mapping specifies that 4 threads should be allocated to processor 0, 2 threads to processor 1, and 1 thread to processor 2. **Results** The output will contain the following columns: | Field Name | Value | |---|---| | packet_num | 0 | | send_count | 10 | | send_freq | 0.1 | | recv_count | 15 | | recv_freq | 0.2 | | thr | 5 | | brn | 2 | | mappings | [{"num_threads": 4, "processor_id": 0, "receiver_addr": "1.2.3.4"}] ``` **Interpretation** * The packet spacing is 100 ms. * There are 2 threads in the sender and 1 thread in the receiver. * The mappings specify that 4 threads will connect to processor 0, 2 threads will connect to processor 1, and 1 thread will connect to processor 2.

正文

提纲

netperf
iperf
pathchar
ntttcp
itracert

netperf

netperf是一款针对网络性能的测试工具,主要基于TCP或UDP的传输。
根据应用的不同,可以进行批量数据传输(bulk data transfer)模式
和请求/应答(request/reponse)模式的性能测试。

netperf以Client/Server方式工作。
Server端是netserver,用来侦听来自client端的连接,
Client端是netperf,用来向Server发起网络测试。
在Client与Server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;
在控制连接建立并传递了测试配置信息以后,Client与Server之间会再建立一个测试连接,
来回传递特殊的流量模式,用来测试网络的性能。

netperf测试结果反映了一个系统能够以多快的速度向另外一个系统发送数据,
以及另外一个系统能够以多块的速度接收数据。

简单使用

下载: http://www.netperf.org/netperf
也可以从这里下载: https://github.com/HewlettPackard/netperf/tags
最新版本是 2.7.0 

安装: 
tar 解压缩之后 进入目录 ./configure>make>make install 就可以安装
安装完后在当前目录的src目录下会出现 netperf 和 netserver 两个文件.就可以使用.

常用的命令行参数:
-H host :指定远端运行netserver的server IP地址;
-l testlen:指定测试的时间长度(秒);
-t testname:指定测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR。

样例

1.TCP_STREAM
netperf缺省情况下进行TCP批量传输,
即-t TCP_STREAM。测试过程中,
netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量。
netperf -H 10.110.80.19 -l 30 

结果为:
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.110.80.19 () port 0 AF_INET
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  16384  16384    30.02     928.59

 数据含义:
(1)远端系统(即Server)使用大小为87380字节的socket接收缓冲;
(2)本地系统(即Client)使用大小为16384字节的socket发送缓冲;
(3)向远端系统发送的测试分组大小为16384字节;
(4)测试时间为30秒;
(5)吞吐量的测试结果为928.59Mbits/秒

在默认情况下,netperf发送的测试分组大小为本地系统所使用的socket发送缓冲大小。

在TCP_STREAM方式下,相关的局部参数如下表所示:
-s size  设置本地系统的socket发送与接收缓冲大小
-S size  设置远端系统的socket发送与接收缓冲大小
-m size  设置本地系统发送测试分组的大小
-M size  设置远端系统接收测试分组的大小
-D       对本地与远端系统的socket设置TCP_NODELAY选项

TCP_RR

TCP_RR方式的测试对象是多次TCP request和response的交易过程,
但是它们发生在同一个TCP连接中,这种模式常常出现在数据库应用中。

netperf -t TCP_RR -H 10.110.80.19 
# 注意默认运行十秒, 注意请求和发送都是1 bytes 可以通过参数改进. 
Local /Remote
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate         
bytes  Bytes  bytes    bytes   secs.    per sec   
16384  131072 1        1       10.00    5315.45   
16384  87380 

参数          说明
-r req,resp  设置request和reponse分组的大小
-s size      设置本地系统的socket发送与接收缓冲大小
-S size      设置远端系统的socket发送与接收缓冲大小
-D           对本地与远端系统的socket设置TCP_NODELAY选项

所以可以测试一个新命令
netperf -t TCP_RR -H 10.110.80.19 -l 30 -- -r 64,1460

注意这个命令出来的是传输率 不是带宽. 不通消息大小的带宽是完全不可互相比较的. 

Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate         
bytes  Bytes  bytes    bytes   secs.    per sec   
16384  131072 64       1460    30.00    3424.08   
16384  87380 

TCP_CRR

与TCP_RR不同,TCP_CRR为每次交易建立一个新的TCP连接。
最典型的应用就是HTTP,每次HTTP交易是在一条单独的TCP连接中进行的。
因为需要不停地建立新的TCP连接,并且交易结束后拆除TCP连接,
交易率一定会受到很大影响。

netperf -t TCP_CRR -H 10.110.80.19
Socket Size   Request  Resp.   Elapsed  Trans.
Send   Recv   Size     Size    Time     Rate         
bytes  Bytes  bytes    bytes   secs.    per sec   
16384  131072 1        1       10.00    1880.09   
16384  87380 

备注: RR的传输率是5300,但是CRR的传输只有1880 大约只有不到35%的性能
也就是说 数据库的连接是一种比较昂贵的资源. 如果每次都打开重新连接的话会影响性能和吞吐率.

iperf

前期总结过iperf
其实 iperf 也是client-server架构的
命令使用也比较简单. 可以进行简单的网络延迟,丢包以及带宽的测试
安装方式也有偶rpm包的方式比较简单. 参数也类似可以参照之前的公众号文章.

pathchar

下载地址: ftp://ftp.ee.lbl.gov/pathchar/
这个工具是上世纪的人开发的.
一直没有更新. 有一个英文介绍网站:
a tool by Van Jakobson for CHARacterizing network PATHs on IP. Think traceroute, but vastly smarter (and heavier on the network).
pathchar is available for many platforms, notably including Windows and various flavours of UNIX.
It works by sending a number of ICMP probe packets of different sizes (by default from 48 byte to the MTU - usually 1500 byte).
pathchar analyzes in real time the delay and the packet loss, and provides a characterization of the speeds of each link. It sounds strange, but the software can measure the bandwidth of an Internet link away from you.

Pathchar has very minimal documentation, and it is in a sort of permanent alpha state.
Nonetheless I find it a useful and interesting tool.
At the very least you can use it to discover whether your IPS is short-selling you: or if he is trying to stuff 1000 DSL connection into a 10 Mb/s link.

简单使用
./pathchar -f 4 -m 1500 www.baidu.com

参数含义不明. 没找到任何资料..
pathchar to 10.110.80.19 (10.110.80.19)
 doing 32 probes at each of 45 sizes (64 to 1500 by 32)
 3 www.gscloud.com (10.110.80.19)
3 hops, rtt 67 us (67 us), bottleneck Inf Mb/s, pipe -2147483648 bytes

ntttcp

微软官方github上面的工具
https://github.com/microsoft/ntttcp
我理解为 new technical test tcp 

帮助信息:
NTttcp: [-s|-r|-l|-n|-p|-sp|-ns|-to|-a|-rb|-sb|-u|-w|-d|-t|-cd|-wu|-v|-6|-wa|-nic|-xml|-ndl|-na|-hpt|-uso|-uro|-x|-hv|-nsb|-thr|-brn|-lm|-icp|-cfi|-es|-sam|-qos|-jm|-ps] -m <mappings>

        -s   work as a sender
        -r   work as a receiver
        -l   <Length of buffer>         [default TCP: 64K, UDP: 128]
        -n   <Number of buffers>        [default: 20K]
        -p   <port base>                [default: 5001]
        -sp  Synchronize data ports, if used -p must be same on every instance.
        -ns  No sync. Senders will start sending as soon as possible.
             By default, senders will only start after they perform a handshake
             with receivers verifying readiness, using extra TCP connections.
             The option is helpful for many-thread tests, reducing time for
             the test to start and increasing the max allowed connections.
             Either all or none of the NTttcp instances must have this option.
        -to  <timeout> in milliseconds. [default: 600000]
             I/O and thread waits will fail if hung for this duration.
             Set to 0 for infinite timeouts.  (NTttcp may hang indefinitely.)
        -a   <outstanding I/O>          [default: 2]
        -rb  <Receive buffer size>      [default: -1]
             If and only if non-negative, SO_RCVBUF will be set to this value.
             SO_RCVBUF of 0 will disable winsock receive buffering.
             If negative, use OS default behavior. (e.g. dynamic buffering)
        -sb  <Send buffer size>         [default: 0 with -a; -1 otherwise]
             If and only if non-negative, SO_SNDBUF will be set to this value.
             SO_SNDBUF of 0 will disable winsock send buffering.
             If negative, use OS default behavior. (e.g. dynamic buffering)
        -ndl set TCP_NODELAY socket option
        -u   UDP send/recv
        -w   WSARecv/WSASend
        -rt  enable roundtrip mode
        -d   Verify Flag
        -t   <Runtime> in seconds. When with -n mans max test time and disables
             -wu and -cd flags.         [default (with -n): 3h]
        -cd  <Cool-down> in seconds
        -wu  <Warm-up> in seconds
        -v   enable verbose mode
        -6   enable IPv6 mode
        -wa  Sets the WAIT_ALL flag when using recv or WSARecv functions
        -nic <NIC IP>
             Use NIC with <NIC IP> for sending data (sender only).
        -xml [filename] save XML output to a file, by default saves to xml.txt
        -na  <NUMA node number> Affinitize process to a particular NUMA node.
             If -m mapping specifies a processor number, this option
             has no effect.
        -hpt hide per thread stats
        -uso <Message size> Enable UDP segmentation offload with this maximum
             message size.
        -uro Enable UDP receive coalescing.
        -uc  Use unconnected UDP sockets and sendto/recvfrom.
        -x   <PacketArray size>         [default: 1]
             Use TransmitPackets, calling it with the given packet array size.
        -hv  Use AF_HYPERV. Host names must be VM GUIDs
        -nsb no stdio buffer, all output will be flushed immediately.
        -thr <throughput[KB/s]>
             Send data with throughput specified for each thread (sender only).
        -brn <burn cpu amount>
             Amount of CPU operations performed after completing an IO.
        -lm  Do latency measurement. NTttcp uses QueryPerformanceCounter to
             measure latency. May impact performance if you enable it.
        -icp <max active threads>        [default: -1]
             I/O Completion Ports max active threads value < 0 indicates that
             WaitForMultipleObjects should be used instead. 0 means using I/O
             completion ports with same number of threads as number of cpu-s.
             Anything > 0 sets number of threads to that value.
        -cfi Uses idle CPU cycles to compute CPU utilization (Vista or higher)
        -es  Collect EStats (only displayed in XML, must run as admin).
        -sam <sample time period> in seconds.
        -qos <QOS priority> integer from 0 to 5 which maps to traffic types:
             0 : QOSTrafficTypeBestEffort      : same priority as non-QOS
             1 : QOSTrafficTypeBackground      : lower priority than normal
             2 : QOSTrafficTypeExcellentEffort : more important than normal
             3 : QOSTrafficTypeAudioVideo      : A/V streaming
             4 : QOSTrafficTypeVoice           : realtime voice streams
             5 : QOSTrafficTypeControl         : highest priority
             QOS is disabled by default.
        -jm  [filename] Jitter measurement:
             measure and output packet arrival time. Sender should not include
             a filename but the receiver must specify the output file.
             Buffer length must be greater than or equal to 20 bytes.
             The output format is a CSV with the following headers:
             packet_num , send_count, send_freq, recv_count, recv_freq
        -ps  <duration (ms)> Wait between buffer sends in ms (sender only).
             Packet spacing is only supported for 1 thread synchronous sending.
             The spacing must be between 5 and 1000 ms.
             -thr and -brn are not supported options when -ps is used.
        -m   <mappings>
             One or more mapping 3-tuples separated by spaces:
             (number of threads, processor number, receiver address or name)
             Processor number must be in the process kgroup. If processor number
             is "*", the threads are not affinitized.
             e.g. "-m 4,0,1.2.3.4 2,*,contoso" sets up:
              -4 threads on processor 0 to connect to 1.2.3.4
              -2 unaffinitized threads to connect to contoso


ntttcp 极简使用教程

被测试服务端: 
.\ntttcp.exe  -r -p 80 -a 6 -t 60 -cd 5 -wu 5 -v -xml c:\bench.xml -m 1,0,127.0.0.1 1,1,127.0.0.1
参数含义
-r:接收。
-p 80:第一个线程用于接收数据的端口。端口号随每个增加的接收方线程递增。
-a 6:每个线程发布 6 个接收重叠缓冲区的异步数据传输
-t 60:以秒为单位的测试持续时间。
-cd 5: 5 秒测试冷却时间。
-wu 5:5 秒测试预热时间。
-v:指定详细测试输出。
-xml: 将测试输出保存到指定文件(默认保存到 xml.txt)。
-m:为每个会话指定三个映射参数(线程编号、CPUID、接收方 IP 地址)。多个会话以空格分隔。

被测试客户端
.\ntttcp.exe  -s -p 80 -a -t 60 -cd 5 -wu 5 -m 1,0,127.0.0.1 1,1,127.0.0.1
参数含义
-s:发送。
-p 80:第一个线程用于发送数据的端口。端口号随每个增加的发送方线程递增。
-a:每个线程的异步发送重叠缓冲区的默认值为 2。如果需要,请指定非默认值。
-t 60:以秒为单位的测试持续时间。
-cd 5: 5 秒测试冷却时间。
-wu 5:5 秒测试预热时间。
-m:为每个会话指定三个映射参数(线程编号、CPUID、目标 IP 地址)。多个会话以空格分隔

我这边一个简单的测试结果

.\ntttcp.exe  -s -p 80 -a -t 60 -cd 5 -wu 5 -m 1,0,127.0.0.1 1,1,127.0.0.1
Copyright Version 5.39
Network activity progressing...

Thread  Time(s) Throughput(KB/s) Avg B / Compl
======  ======= ================ =============
     0   60.001       810497.425     65536.000
     1   60.001       810075.032     65536.000

#####  Totals:  #####

   Bytes(MEG)    realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
    94957.000000      60.003      60282.245         1582.544

Throughput(Buffers/s) Cycles/Byte       Buffers
===================== =========== =============
            25320.705       2.775   1519312.000

DPCs(count/s) Pkts(num/DPC)   Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
      681.419        40.397       57057.149          0.482

Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
     1651724          1651712         212     50     28.898

itracert

忘记从哪里下载的了
其实他用的ip地址源就是最开始纯真QQ使用的
纯真IP库.
其实是可以自动升级的 命令非常简单. 

itracert 8.8.8.8 
不需要任何参数, 我这边的结果为:
说明至少 13跳, 大约 45毫秒的延迟(怀疑不准, 应该是在香港直接返回了)
.\itracert.exe 8.8.8.8
Tracing route to 8.8.8.8

 1:     2ms     192.168.0.1     @ 局域网 对方和您在同一内部网
 2:     2ms     192.168.1.1     @ 局域网 对方和您在同一内部网
 3:     20ms    39.71.64.1      @ 山东省临沂市 联通
 4:     8ms     119.164.209.33  @ 山东省济南市 联通
 5:     *       Request time out.
 6:     *       Request time out.
 7:     49ms    219.158.97.2    @ 中国 联通骨干网广东节点(华南出口)
 8:     54ms    219.158.20.222  @ 中国 联通骨干网
 9:     47ms    219.158.16.202  @ 中国 联通骨干网
10:     43ms    72.14.213.114   @ 美国 加利福尼亚州圣克拉拉县山景市谷歌公司
11:     63ms    108.170.241.1   @ 香港 特别行政区
12:     45ms    142.250.57.141  @ 美国 加利福尼亚州圣克拉拉县山景市谷歌公司
13:     45ms    8.8.8.8 @ 美国 加利福尼亚州圣克拉拉县山景市谷歌公司DNS服务器

知识来源

感谢原作者..周末时间学习整理一下(copy+test)
https://www.shuzhiduo.com/A/MyJxX2VpJn/
https://everything2.com/title/pathchar
https://github.com/microsoft/ntttcp
https://blog.csdn.net/guyan1101/article/details/113759648

与网络性能监控工具整理相似的内容:

网络性能监控工具整理

提纲 netperf iperf pathchar ntttcp itracert netperf netperf是一款针对网络性能的测试工具,主要基于TCP或UDP的传输。 根据应用的不同,可以进行批量数据传输(bulk data transfer)模式 和请求/应答(request/repons

iftop的学习与使用

iftop的学习与使用 背景 前段时间一直进行netperf 等网络性能验证工具的学习与使用. 监控很多时候采用了 node-exporter + prometheus + grafana来进行观察 但是到了一些特殊项目现场. 感觉grafana的大屏展示模式,其实存在很多不太优雅的地方. 还是需要

带你掌握数仓的作业级监控TopSQL

摘要:目前TopSQL功能被用户广泛使用,是性能定位、劣化分析、审计回溯等重要的基石,为用户提供覆盖内存、耗时、IO、网络、空间等多方面的监控能力。 本文分享自华为云社区《GaussDB(DWS)监控工具指南(一)作业级监控TopSQL》,作者:幕后小黑爪 。 1、引言: 监控系统是智能化管理和自动

[转帖]linux【监控】BCC – 用于Linux性能监视,网络和更多的动态跟踪工具

https://blog.51cto.com/ghostwritten/5344917 文章目录​ ​1. ubuntu安装bcc​​​ ​2. centos安装bcc​​​ ​3. cachestat 缓存统计​​​ ​4. cachetop 缓存命中​​​ ​5. filtop 跟踪内核中文件的

网络性能监测与诊断的专家-AnaTraf

AnaTraf 网络流量分析仪是一款功能强大的网络流量分析工具,可以帮助您轻松解决网络性能问题。如果您正在遇到网络性能问题,请立即使用 AnaTraf 进行网络流量分析和诊断,快速定位问题根源并进行优化。某企业遇到网络速度慢的问题,影响了员工的工作效率。经过排查,发现网络拥塞是造成网络速度慢的主要原...

[转帖]网络基本功(十五):细说网络性能监测与实例(上)

网络基本功(十五):细说网络性能监测与实例(上) 介绍 网络路径性能检测主要包括三方面的内容:带宽测量能够获知网络的硬件特性,如网络的最大容量,吞吐量测量能够获得网络实际可提供的最大容量,数据流测量能够了解真实占用的网络容量。 本文介绍在评估网络性能是否合理时,需要收集的数据及收集方式。涉及工具包括

[转帖]Web性能优化工具WebPageTest(一)——总览与配置

https://www.cnblogs.com/strick/p/6677836.html 网站性能优化工具大致分为两类:综合类和RUM类(实时监控用户类),WebPageTest属于综合类。 WebPageTest通过布置一些特定的场景进行测试,例如不同的网速、浏览器、位置等。 测试完成后,能获得

网络性能监控与流量回溯分析 - 轻松诊断网络问题

随着网络的普及和应用的不断增加,网络性能监控和故障诊断已经成为IT管理工作的重中之重。高效的网络性能监测能够及时发现和解决网络问题,确保业务的稳定运行。而对网络流量的全面分析和回溯也是网络诊断的关键所在。

不要再说你不会了——网络性能问题排查思路

网络性能问题排查思路 服务监控系列文章 服务监控系列视频 网络问题往往是性能排查中最复杂的一个问题,因为网络问题往往涉及的链路比较长,排查起来不仅仅是看本地机器的指标就可以了。本文将展示一个比较系统的排查网络问题的思路。 我们往往都是通过类似prometheus,grafana搭建的监控平台对机器的

[转帖]网络基本功(十六):细说网络性能监测与实例(下)

https://zhuanlan.zhihu.com/p/37898572 转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍 网络问题中,性能问题是最复杂的问题之一,解决这样的问题能够透彻的了解整个网络的结构。但通过合适的吞吐