【转】一文掌握 Linux 性能分析之网络篇(续)

在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个。总结下来,余下的工具包括但不限于以下几个:

  • sar:统计信息历史
  • traceroute:测试网络路由
  • dtrace:TCP/IP 栈跟踪
  • iperf / netperf / netserver:网络性能测试工具
  • perf 性能分析神器

由于篇幅有限,本文会先介绍前面两个,其他工具留作后面介绍,大家可以持续关注。

sar

sar 是一个系统历史数据统计工具。统计的信息非常全,包括 CPU、内存、磁盘 I/O、网络、进程、系统调用等等信息,是一个集大成的工具,非常强大。在 Linux 系统上 sar --help 一下,可以看到它的完整用法。

  • -A:所有报告的总和
  • -u:输出 CPU 使用情况的统计信息
  • -v:输出 inode、文件和其他内核表的统计信息
  • -d:输出每一个块设备的活动信息
  • -r:输出内存和交换空间的统计信息
  • -b:显示 I/O和传送速率的统计信息
  • -a:文件读写情况
  • -c:输出进程统计信息,每秒创建的进程数
  • -R:输出内存页面的统计信息
  • -y:终端设备活动情况
  • -w:输出系统交换活动信息
  • -n:输出网络设备统计信息

在平时使用中,我们常常用来分析网络状况,其他几项的通常有更好的工具来分析。所以,本文会重点介绍 sar 在网络方面的分析手法。

Linux 系统用以下几个选项提供网络统计信息:

  • -n DEV:网络接口统计信息。
  • -n EDEV:网络接口错误。
  • -n IP:IP 数据报统计信息。
  • -n EIP:IP 错误统计信息。
  • -n TCP:TCP 统计信息。
  • -n ETCP:TCP 错误统计信息。
  • -n SOCK:套接字使用。

我们来看几个示例:

(1)每秒打印 TCP 的统计信息。

Copy
sar -n TCP 1

几个参数了解一下:

  • active/s:新的 TCP 主动连接(也就是 socket 中的 connect() 事件),单位是:连接数/s。
  • passive/s:新的 TCP 被动连接(也就是 socket 中的 listen() 事件)。
  • iseg/s:接收的段(传输层以段为传输单位),单位是:段/s
  • oseg/s:发送的段。
    通过这几个参数,我们基本可以知道当前系统 TCP 连接的负载情况。

(2)每秒打印感兴趣的网卡的统计信息

Copy
sar -n DEV 1 | awk 'NR == 3 || $3 == "eth0"'

几个参数了解一下:

  • rxpck/s / txpck/s:网卡接收/发送的数据包,单位是:数据包/s。
  • rxkB/s / txkB/s:网卡接收/发送的千字节,单位是:千字节/s。
  • rxcmp/s / txcmp/s:网卡每秒接受/发送的压缩数据包,单位是:数据包/s。
  • rxmcst/s:每秒接收的多播数据包,单位是:数据包/s。
  • %ifutil:网络接口的利用率。
    这几个参数对于分析网卡接收和发送的网络吞吐量很有帮助。

(3)错误包和丢包情况分析

Copy
sar -n EDEV 1

几个参数了解一下:

  • rxerr/s / txerr/s:每秒钟接收/发送的坏数据包
  • coll/s:每秒冲突数
  • rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
  • txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
  • txcarr/s:发送数据包时,每秒载波错误数
  • rxfram/s:每秒接收数据包的帧对齐错误数
  • rxfifo/s / txfifo/s:接收/发送的数据包每秒 FIFO 过速的错误数
    当发现接口传输数据包有问题时,查看以上参数能够让我们快速判断具体是出的什么问题。

OK,这个工具就介绍到这里,以上只是抛砖引玉,更多技巧还需要大家动手去探索,只有动手,才能融会贯通。

traceroute

traceroute 也是一个排查网络问题的好工具,它能显示数据包到达目标主机所经过的路径(路由器或网关的 IP 地址)。如果发现网络不通,我们可以通过这个命令来进一步判断是主机的问题还是网关的问题。

它通过向源主机和目标主机之间的设备发送一系列的探测数据包(UDP 或者 ICMP)来发现设备的存在,实现上利用了递增每一个包的 TTL 时间,来探测最终的目标主机。比如开始 TTL = 1,当到达第一个网关设备的时候,TTL - 1,TTL = 0 导致网关响应一个 ICMP 超时报文,这样,如果没有防火墙拦截的话,源主机就知道网关设备的地址。以此类推,逐步增加 TTL 时间,就可以探测到目标主机之间所经过的路径。

为了防止发送和响应过程出现问题导致丢包,traceroute 默认会发送 3 个探测包,我们可以用 -q x 来改变探测的数量。如果中间设备设置了防火墙限制,会导致源主机收不到响应包,就会显示 * 号。如下是 traceroute baidu 的结果:

每一行默认会显示设备名称(IP 地址)和对应的响应时间。发送多少个探测包,就显示多少个。如果只想显示 IP 地址可以用 -n 参数,这个参数可以避免 DNS 域名解析,加快响应时间。

和这个工具类似的还有一个工具叫 pathchar,但平时用的不多,我就不介绍了。

以上就是两个工具的简单介绍,工具虽然简单,但只要能解决问题,就是好工具。当然,性能分析不仅仅依靠工具就能解决的,更多需要我们多思考、多动手、多总结,逐步培养自己的系统能力,才能融会贯通

参考:

iperf3
netperf netserver
https://www.jianshu.com/p/42e0fa6bf79c

转载于:https://www.cnblogs.com/langqi250/p/10532981.html

【转】一文掌握 Linux 性能分析之网络篇(续)相关推荐

  1. 一文掌握 Linux 性能分析之网络篇(续)

    在上篇网络篇中,我们已经介绍了几个 Linux 网络方向的性能分析工具,本文再补充几个.总结下来,余下的工具包括但不限于以下几个: sar:统计信息历史 traceroute:测试网络路由 dtrac ...

  2. Linux性能分析之网络篇

    用到工具sar,ethtool sar -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } sar 提供六种不同的语法选项来显示网络信息.-n选项使用6个不同的开关 ...

  3. (一文了解)linux性能分析之CPU篇

    目录 前言 一.CPU 性能指标 1.CPU使用率 2.负载均衡 3.上下文切换 4.CPU缓存命中率 二.常用工具 1.uptime 2.vmstat 3.mpstat 4.top 5.sar 6. ...

  4. 推荐Linux性能分析的一篇论文和两本书

    最重要的一篇paper: A Top-Down method for performance analysis and counters architecture 这篇文章提出了topdown分析模型 ...

  5. Linux性能分析之IO篇

    硬盘IO篇 这里用到iostat用于分析磁盘IO的利器 iostat 3 10 的意思是每3秒检测一次,一共检测10次 %iowait 值得注意的一个地方,表示理论上越低表示磁盘越不繁忙. tps:每 ...

  6. Linux性能分析命令工具汇总

    转自:http://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章. ...

  7. linux性能监控工具perf,Linux性能分析中常用的工具perf介绍

    今天小编要跟大家分享的文章是关于Linux性能分析中常用的工具perf介绍.系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶 ...

  8. 2022最火的Linux性能分析工具--perf

    ►►► 介绍 perf是Linux性能分析中,比较常用的一款工具.它基于时间采集原理,以性能事件为基础,支持针对CPU处理器相关性能指标与操作系统相关性能指标的性能分析.常被用来查找.定位源码级性能问 ...

  9. (转)超全整理!Linux性能分析工具汇总合集

    原文地址:https://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇 ...

最新文章

  1. Arm架构CPU服务器
  2. C++ sizeof 使用规则及陷阱分析【转】
  3. 用keras作CNN卷积网络书本分类(书本、非书本)
  4. tensorflow框架
  5. Android——4.2.2 文件系统文件夹分析
  6. Web前端开发面试考点指南
  7. open wrt 跟换主题_换变速箱油的常见疑问解答
  8. python精彩编程200例-编程语言入门经典100例【Python版】
  9. java session机制_如何学习Session的机制使用
  10. 数据存储过程之MySQL与ORACLE数据库的差别
  11. 通过bootstrap4框架制作商城网页
  12. php网页抓取浏览者手机号码_提供一个网页抓取hao123手机号码归属地的例子
  13. fpga学习之vga驱动
  14. 【毕业季】总结过去,展望未来
  15. 万恶的hello world!
  16. Linux基础篇(五):远程操作
  17. 如何用csdn上传资源
  18. win10 wifi图标不见了 解决办法
  19. 基于51单片机的DS12C887电子钟万年历带农历温度
  20. 2022-02-17 Android11 删除系统某种语言,我这里删掉粤语,修改frameworks/base/core/res/res/values/locale_config.xml里面的内容。

热门文章

  1. SQL Server-表表达式基础
  2. 如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
  3. dedecms调用当前栏目ID与当前栏目顶级ID的方法
  4. DataTable ,XML和JSON相互转化
  5. Spring+SpringMVC+Mybatics配置文件解析
  6. select的value值为对象时,获取label和value
  7. 面试必考之http状态码有哪些
  8. 2003迁移到 Server 2008
  9. kubernetes入门(04)kubernetes的核心概念(1)
  10. elasticsearch系列(七)java定义score