性能问题分析排查思路之机器(3)

本文是性能问题分析排查思路的展开内容之一,第2篇,主要分为日志1期,机器4期、环境2期共7篇系列文章,本期是第三篇,讲机器(硬件)的网络方面的排查方法和最佳实践。

主要内容如图所示:

本文内容主要涉及一个网络本命工具netstat、网络的延迟、抖动和丢包率查看、流量与网络带宽上限查询、链路分析、TCP连接数检测和与网络相关的常见异常,通过这些工具和方法可了解网络的主要指标表现。

本命工具netstat

Netstat是一个控制台命令,用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,它是一个强大的网络工具,可帮助用户监视网络活动、查找与网络相关的问题,并提供有关网络连接的详细信息。
Netstat命令提供了多种选项,以便用户根据需要定制输出信息,功能很多,本文不展开全部细节,只是介绍一下有这样的一个命令行工具,具体的语法随时搜索即可。

问题一:查看某个端口是否处于监听状态?
命令:netstat -nalp | grep 端口号

问题二:按连接状态分类并统计某个进程占了多少tcp连接?

命令是:netstat -anp | grep 12345 | awk '/^tcp/ {print $6}' | uniq -c
这个对于排查连接数过多,不释放或者半连接问题非常有效!

如图所示,这个进程建立了了3000多个网络连接,最后排查出该进程存在连接未释放的Bug,这就是一个直接证据!

问题三:按照PID进行分类统计,并取前10位。

命令是:

netstat -anp | awk '/^tcp/ {print $7}' | cut -d/ -f1 | sort | uniq -c | sort -nr | head

结果如图所示:

图中第一列是连接数,第二列是进程的PID,从这个统计可以直观看出一些异常进程(没错,就是排名第一那个)!

以上用法,抛砖引玉。

网络延迟与抖动

ping是一个大家所熟知的命令,虽然普通,但是它也足够强大。

图中首先可以看到网络是否联通。其次,可以直观看出现在的延迟,例如上图都是20多毫秒,这个延迟已经很高了。数据中心内部一般不到1毫秒,我这里是ping的一个外部网络。
再然后,通过最后一行的统计信息,可以看到网络抖动非常小,只有0.321毫秒,因此该网络虽然慢,但慢的很稳定很均匀。
最后,丢包率,这里直接看到是0% packet loss,你可以测试更长时间观察是否丢包。

丢包率

上面的ping命令可以查看实时的丢包情况。
ifconfig命令可以查看历史统计,它显示的是每个网卡的信息,关注每个信息块的最后两行:

分别表示接收和发送的网络包数目,其中包含了drop关键字,也就是丢包的数量,这里可看到是2010571,这种就需要确认下网络是否有拥塞或其他异常。

网络流量

一般网络流量要通过监控系统的页面进行查看,如果没有现成的页面监控可以看,使用以下的命令查看。

网络带宽上限

使用ethtool 网卡名获取,网卡名使用上面的命令可以得到!

上图中的Speed就是这个网卡的理论速度上限了,即千兆网卡,1000Mb/s。
这里需要提醒的是,千兆不是我们常说的1GB,b在这里是比特,不是Bytes!

实时网速

这里又要用到linux神器,sar命令。

sar的功能太多,关于看网速的具体命令是:sar -n DEV 1

第一列是时间戳。其他主要字段解释如下:

  • IFACE:这是网络接口的名称。在这个例子中,有两个接口。
  • rxpck/s:这是每秒接收的数据包数量(Received Packets per Second)
  • txpck/s:这是每秒发送的数据包数量(Transmitted Packets per Second)
  • rxkB/s:这是每秒接收的千字节数(Received Kilobytes per Second)
  • txkB/s:这是每秒发送的千字节数(Transmitted Kilobytes per Second)

通过收发的字节数与上面的带宽对比,可以看到是否达到网络瓶颈!

另一个实时网速

iptraf-ng还可以监控所有出入的流量,进行按照协议区分流量,并设置过滤器等。它可以用于实时监视网络流量、统计网络接口的使用情况、查看网络连接等。
这是一个略漂亮点的网速查看工具!如图所示:

链路

tracepath是一个网络诊断工具,用于追踪数据包从源主机到目标主机的路径。它通过发送一系列逐渐增加的TTL(Time To Live)值的ICMP回显请求报文来探测路径上的每个路由器,并记录每个路由器的IP地址和响应时间。
示例输出:

tracepath to www.example.com (93.184.216.34), 30 hops max, 60 byte packets 
1 192.168.1.1 (1.234 ms) 
2 10.0.0.1 (2.345 ms) 
3 * * * 
4 203.0.113.1 (123.456 ms) 
5 * * * 6 93.184.216.34 (123.456 ms)

其中星号表示在该跳点上没有收到回复。每行还包括该跳点的IP地址和从源主机到该跳点的往返时间(以毫秒为单位)。

如果发现某个跳点的响应时间特别长或没有收到回复,那么可能表示该路由器存在故障或网络拥塞等问题。这对于网络故障排查和优化非常有帮助。

TCP相关

可以继续使用sar命令来观察网络的重发数、强制关闭数。另外linux的网络半连接、全连接的队列大小可以适当扩大。

常见问题

  1. 网络连接问题

    • 报错信息:Network is unreachableConnection refusedNo route to host等。
    • 现象:无法ping通其他主机,无法上网,无法访问远程服务等。
    • 解决方法:检查本地网络设置、路由器配置、防火墙设置等。
  2. DNS解析问题

    • 错误信息:Name or service not known
    • 现象:无法通过域名访问网站,只能通过IP地址访问。
    • 解决方法:检查/etc/resolv.conf文件中的DNS设置,或者尝试更换DNS服务器。
  3. 服务端口监听问题

    • 错误信息:Connection refused
    • 现象:尝试连接某个服务端口时,被服务器拒绝。
    • 解决方法:检查服务是否正在运行,端口是否开放,以及防火墙规则是否允许该连接。
  4. 网络超时

    • 错误信息:Request timed out
    • 现象:网络请求长时间无响应。
    • 解决方法:检查网络延迟、带宽限制、服务器负载等因素。
  5. 路由配置问题

    • 错误信息:Destination Host Unreachable
    • 现象:尝试访问某个网络时,提示目标主机不可达。
    • 解决方法:使用route命令查看和修改路由表,确保默认路由设置正确。

结语

Linux网络系统的排查工具众多,每种工具都有其独特的功能和适用场景。通过结合使用这些工具和使用经验,我们能够更加高效地诊断和解决网络问题。然而,仅依赖工具是不够的,我们还需不断学习和积累网络知识,以便更好地理解和处理各种网络问题。希望本文所介绍的排查工具和使用经验能为读者在Linux网络系统维护排查中提供一些帮助。

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024点线面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值