网络

网络

网络这个概念涵盖的范围较广,在应用层、传输层、网络层、网络接口层都有不同的指标去衡量。这里我们讨论的网络,特指应用层的网络,通常使用的指标如下:

  • 网络带宽:表示链路的最大传输速率;
  • 网络吞吐:表示单位时间内成功传输的数据量大小;
  • 网络延时:表示从网络请求发出后直到收到远端响应,所需要的时间;
  • 网络连接数和错误数;

一般来说,应用层的网络瓶颈有如下几类:

  • 集群或机器所在的机房的网络带宽饱和,影响应用 QPS/TPS 的提升;
  • 网络吞吐出现异常,如接口存在大量的数据传输,造成带宽占用过高;
  • 网络连接出现异常或错误;
  • 网络出现分区。

带宽和网络吞吐这两个指标,一般我们会关注整个应用的,通过监控系统可直接得到,如果一段时间内出现了明显的指标上升,说明存在网络性能瓶颈。对于单机,可以使用 sar 得到网络接口、进程的网络吞吐。

使用 ping 或者 hping3 可以得到是否出现网络分区、网络具体时延。对于应用,我们更关注整个链路的时延,可以通过中间件埋点后输出的 trace 日志得到链路上各个环节的时延信息。使用 netstat、ss 和 sar 可以获取网络连接数或网络错误数。

# 查看系统当前网络连接数
$ netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

mtr

MTR 是一个简单的跨平台命令行网络诊断工具,将常用的 traceroute 和 ping 程序的功能组合到一个工具中。以与 traceroute 类似的方式,mtr 打印有关数据包从运行 mtr 的主机到用户指定的目标主机的路由的信息。运行 mtr 后,它将探查本地系统与您指定的远程主机之间的网络连接。它首先在主机之间建立每个网络跃点(网桥,路由器和网关等)的地址,然后对其进行 ping(发送 ICMP ECHO 请求的序列)以确定每个计算机的链路质量。

该工具已预装在大多数 Linux 发行版中,我们也可以手动添加:

$ sudo apt install mtr
$ sudo yum install mtr
$ sudo dnf install mtr

使用 mtr 的最简单示例是提供远程计算机的域名或 IP 地址作为参数,例如 google.com 或 216.58.223.78。此命令将向您显示实时更新的路由跟踪报告,直到您退出程序(通过按 q 或 Ctrl + C)。

$ mtr google.com
OR
$ mtr 216.58.223.78

Start: Thu Jun 28 12:10:13 2018
HOST: TecMint                     Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.0.1                0.0%     5    0.3   0.3   0.3   0.4   0.0
  2.|-- 5.5.5.211                  0.0%     5    0.7   0.9   0.7   1.3   0.0
  3.|-- 209.snat-111-91-120.hns.n 80.0%     5    7.1   7.1   7.1   7.1   0.0
  4.|-- 72.14.194.226              0.0%     5    1.9   2.9   1.9   4.4   1.1
  5.|-- 108.170.248.161            0.0%     5    2.9   3.5   2.0   4.3   0.7
  6.|-- 216.239.62.237             0.0%     5    3.0   6.2   2.9  18.3   6.7
  7.|-- bom05s12-in-f14.1e100.net  0.0%     5    2.1   2.4   2.0   3.8   0.5

常见的参数用法如下:

# 强制展示 IP 地址
$ mtr -n google.com

# 同时展示域名与 IP
$ mtr -b google.com

# 使用 TCP 或者 UDP
$ mtr --tcp test.com
$ mtr --udp test.com

# 设置测试包的大小
$ mtr -r -s PACKETSIZE -c 5 google.com >mtr-report

您可以使用-r 标志将其设置为报告模式,该标志是用于生成有关网络质量的统计信息的有用选项。您可以将此选项与-c 选项一起使用以指定 ping 的数量。由于统计信息已打印到标准输出,因此您可以将其重定向到文件以供以后分析。

$ mtr -r -c 5 google.com >mtr-report
$ mtr -rw -c 5 google.com >mtr-report
$ mtr -o "LSDR NBAW JMXI" 216.58.223.78