加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

一文掌握 Linux 性能分析之网络篇

发布时间:2019-03-19 15:40:53 所属栏目:Windows 来源:著名的矿洞程序员
导读:副标题#e# 比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看、监控,又包括网络链路上的包转发时延、吞吐量、带宽等指标分析。包括但不限于以下分析工具: ping:测试网络连通性 ifconfig:接口配置 ip:网络接口统计信息 netsat:多种网络栈和
副标题[/!--empirenews.page--]

比较宽泛地讲,网络方向的性能分析既包括主机测的网络配置查看、监控,又包括网络链路上的包转发时延、吞吐量、带宽等指标分析。包括但不限于以下分析工具:

  • ping:测试网络连通性
  • ifconfig:接口配置
  • ip:网络接口统计信息
  • netsat:多种网络栈和接口统计信息
  • ifstat:接口网络流量监控工具
  • netcat:快速构建网络连接
  • tcpdump:抓包工具
  • sar:统计信息历史
  • traceroute:测试网络路由
  • pathchar:确定网络路径特征
  • dtrace:TCP/IP 栈跟踪
  • iperf / netperf / netserver:网络性能测试工具
  • perf 性能分析神器

本文先来看前面 7 个。

ping

ping 发送 ICMP echo 数据包来探测网络的连通性,除了能直观地看出网络的连通状况外,还能获得本次连接的往返时间(RTT 时间),丢包情况,以及访问的域名所对应的 IP 地址(使用 DNS 域名解析),比如:

一文掌握 Linux 性能分析之网络篇

我们 ping baidu.com,-c 参数指定发包数。可以看到,解析到了 baidu 的一台服务器 IP 地址为 220.181.112.244。RTT 时间的最小、平均、最大和算术平均差分别是 40.732ms、40.762ms、40.791ms 和 0.248。

ifconfig

ifconfig 命令被用于配置和显示 Linux 内核中网络接口的统计信息。通过这些统计信息,我们也能够进行一定的网络性能调优。

1)ifconfig 显示网络接口配置信息

其中,RX/TX packets 是对接收/发送数据包的情况统计,包括错误的包,丢掉多少包等。RX/TX bytes 是接收/发送数据字节数统计。其余还有很多参数,就不一一述说了,性能调优时可以重点关注 MTU(最大传输单元) 和 txqueuelen(发送队列长度),比如可以用下面的命令来对这两个参数进行微调:

  1. ifconfig eth0 txqueuelen 2000 
  2. ifconfig eth0 mtu 1500  

2)网络接口地址配置

ifconfig 还常用来配置网口的地址,比如:

为网卡配置和删除IPv6地址:

  1. ifconfig eth0 add 33ffe:3240:800:1005::2/64 #为网卡eth0配置IPv6地址 
  2. ifconfig eth0 del 33ffe:3240:800:1005::2/64 #为网卡eth0删除IPv6地址 

修改MAC地址:

  1. ifconfig eth0 hw ether 00:AA:BB:CC:dd:EE 

配置IP地址:

  1. ifconfig eth0 192.168.2.10 
  2. ifconfig eth0 192.168.2.10 netmask 255.255.255.0 
  3. ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255 

IP

ip 命令用来显示或设置 Linux 主机的网络接口、路由、网络设备、策略路由和隧道等信息,是 Linux 下功能强大的网络配置工具,旨在替代 ifconfig 命令,如下显示 IP 命令的强大之处,功能涵盖到 ifconfig、netstat、route 三个命令。

netstat

netstat 可以查看整个 Linux 系统关于网络的情况,是一个集多钟网络工具于一身的组合工具。

常用的选项包括以下几个:

  • 默认:列出连接的套接字
  • -a:列出所有套接字的信息
  • -s:各种网络协议栈统计信息
  • -i:网络接口信息
  • -r:列出路由表
  • -l:仅列出有在 Listen 的服务状态
  • -p:显示 PID 和进程名称

各参数组合使用实例如下:

  • netstat -at 列出所有 TCP 端口
  • netstat -au 列出所有 UDP 端口
  • netstat -lt 列出所有监听 TCP 端口的 socket
  • netstat -lu 列出所有监听 UDP 端口的 socket
  • netstat -lx 列出所有监听 UNIX 端口的 socket
  • netstat -ap | grep ssh 找出程序运行的端口
  • netstat -an | grep ':80' 找出运行在指定端口的进程

1)netstat 默认显示连接的套接字数据

一文掌握 Linux 性能分析之网络篇

整体上来看,输出结果包括两个部分:

  • Active Internet connections :有源 TCP 连接,其中 Recv-Q 和 Send-Q 指的是接收队列和发送队列,这些数字一般都是 0,如果不是,说明请求包和回包正在队列中堆积。
  • Active UNIX domain sockets:有源 UNIX 域套接口,其中 proto 显示连接使用的协议,RefCnt 表示连接到本套接口上的进程号,Types 是套接口的类型,State 是套接口当前的状态,,Path 是连接到套接口的进程使用的路径名。

2)netstat -i 显示网络接口信息

一文掌握 Linux 性能分析之网络篇

接口信息包括网络接口名称(Iface)、MTU,以及一系列接收(RX-)和传输(TX-)的指标。其中 OK 表示传输成功的包,ERR 是错误包,DRP 是丢包,OVR 是超限包。

这些参数有助于我们对网络收包情况进行分析,从而判断瓶颈所在。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!