Code前端首页关于Code前端联系我们

Linux性能分析工具整理,如果用得不好,服务器就废了

terry 2年前 (2023-09-28) 阅读数 99 #未命名

性能分析工具

先看一张图:

linux性能分析工具整理,用不好服务器就是废物

上图是 Brendan Gregg 分享的性能分析,

这里的所有工具都可以通过人工获取其帮助文档。这里简单介绍一下它的常规用法:

vmstat - 虚拟内存统计

vmstat(VirtualMeomoryStatistics,虚拟内存统计)是 Linux 常用的内存监控工具,可以监控操作系统虚拟内存、进程、 CPU等 一般vmstat使用情况:vmstat间隔次数是指每隔interval秒采样一次,为总次数。如果省略时间,则会收集数据,直到用户手动停止为止。一个简单的例子:

linux性能分析工具整理,用不好服务器就是废物

您可以使用ctrl+c来阻止vmstat收集数据。

第一行显示自系统启动以来的平均值,第二行开始显示现在正在发生的情况,接下来的行显示每5秒间隔内发生的情况,每一列的含义在标题中,如下所示:

  • procs:r 此列显示有多少进程正在等待 CPU,b 列显示有多少进程在持续休眠(等待 IO)。

  • 内存:已交换列显示磁盘有多少块已交换(切换页面),其余列显示有多少块空闲(未使用)、有多少块用作缓冲区以及有多少块已使用。用作操作系统的缓存。

  • swap:显示交换活动:每秒有多少块正在交换(从磁盘)和交换(到磁盘)。

  • io:显示已从块设备读取 (bi) 和写入 (bo) 的块数,通常是由于硬盘驱动器 I/O 造成的。

  • system:显示每秒中断数(in)和上下文切换数(cs)。

  • cpu:显示各种操作所花费的所有 CPU 时间的百分比,包括运行用户代码(非内核)、运行系统代码(内核)、空闲和等待 IO。

内存不足的症状:空闲内存急剧减少,回收buffer和cache无济于事,大量使用交换分区(swpd),频繁的页面交换(swap),读写磁盘(io)数量增加,和缺页中断 (in) 增加,上下文切换次数 (cs) 增加,等待 IO 的进程数 (b) 增加,大量 CPU 时间用于等待 IO (wa)

iostat - - 用于报告中央处理器统计信息

iostat 用于报告整个系统、适配器、tty 设备、磁盘和 CD-ROM 的中央处理单元 (CPU) 统计信息和输入/输出统计信息。默认显示与 vmstat 相同的 CPU 使用信息。要显示扩展设备统计信息,请使用以下命令:

linux性能分析工具整理,用不好服务器就是废物

第一行显示自系统启动以来的平均值,然后是增量平均值,每个设备一行。

Linux磁盘IO指标缩写的常见习惯:rq是请求,r是读,w是写,qu是队列,sz是大小,a是平均,tm是时间,svc是服务。

  • rrqm/s 和 wrqm/s:每秒合并的读写请求,“合并”是指操作系统将多个逻辑请求出列,并在实际磁盘上将它们合并为一个请求。

  • r/s 和 w/s:每秒发送到设备的读写请求数。

  • rsec/s 和 wsec/s:每秒读写的扇区数。

  • avgrq –sz:请求的扇区数。

  • avgqu –sz:设备队列中待处理请求的数量。

  • await:每个IO请求所花费的时间。

  • svctm:实际请求时间(服务时间)。

  • %util:至少有一个活动请求的时间百分比。

dstat - 系统监控工具

dstat显示CPU使用率、磁盘IO状态、网络包发送状态和页面变化状态。输出内容丰富多彩且非常可读。相比vmstat和Iostat的输入,更加详细,也相对直观。使用时直接输入命令即可,当然也可以使用特定参数。

如下: dstat –cdlmnpsy

linux性能分析工具整理,用不好服务器就是废物

iotop--LINUX进程实时监控工具

iotop命令是专门用于显示硬盘IO的命令。界面风格类似top命令,可以具体显示IO负载情况。什么过程产生的。它是用于监控磁盘 I/O 使用情况的顶级工具。它有一个与top类似的用户界面,包括PID、用户、I/O、进程等相关信息。

可以非交互方式使用:

iotop–bidinterval

查看每个进程的I/O可以使用

pidstat,pidstat–dinstat

pidstat--监控使用系统资源情况

pidstat主要用于监控所有或特定进程对系统资源的使用情况,如CPU、内存、设备IO、任务切换、线程等。

使用方法:

pidstat –dinterval

pidstat 还可用于统计 CPU 使用信息:

pidstat–uinterval

统计内存信息:

pidstat–rinterval

top

  • top 命令的摘要部分显示五个方面的系统性能信息:

  • 负载:时间、登录用户数、系统平均负载;

  • 进程:运行、睡眠、停止、僵尸;

  • cpu:用户状态、核心状态、NICE、空闲、等待IO、中断等;

  • 内存:总计、已用、空闲(系统角度)、缓冲区、缓存;

  • 交换分区:总计、已用、空闲

任务区默认显示:进程ID、有效用户、进程优先级、NICE值、进程使用的虚拟内存、物理内存和共享内存、进程状态、CPU使用情况、内存使用情况、累计CPU时间、进程命令行信息。

htop

htop是Linux系统中的交互式进程查看器,文本模式应用程序(在控制台或X终端),需要ncurses。

linux性能分析工具整理,用不好服务器就是废物

Htop 允许用户交互工作,支持颜色主题,可以水平或垂直滚动​​进程列表,并支持鼠标操作。

与top相比,htop有以下优点:

  • 您可以水平或垂直滚动​​进程列表来查看所有进程和整个命令行。

  • 在启动方面,它比top要快。

  • 结束进程时无需输入进程ID。

  • htop支持鼠标控制。

mpstat

mpstat 是多处理器统计的缩写,是一个实时系统监控工具。它报告一些有关CPU的统计信息,这些信息存储在文件/proc/stat中。在多CP​​U系统中,它不仅可以查看所有CPU的平均状态信息,还可以查看特定CPU的信息。一般用途:

mpstat–PALLintervaltimes

netstat

netstat 用于显示 IP、TCP、UDP 和 ICMP 协议相关的统计信息,一般用于监控检查机器各端口的网络连接情况。

常用用法:

netstat –npl#可以查看你要打开的端口是否打开。 netstat-rn#打印路由表信息。 netstat-in# 提供有关系统的接口信息,打印每个接口的 MTU、输入数据包数量、输入错误、输出数据包数量、输出错误、冲突以及输出队列的当前长度。 ?结束程序:

psaux|grepmysqld|grep–vgrep|awk'{print$2}'xargskill-9

杀死僵尸进程:

ps–eal|awk'{if($2= = "Z " ){print$4}}'|xargskill-9

strace

跟踪程序执行过程中收到的系统调用和信号,以帮助分析程序或命令执行过程中出现的异常情况。

示例:要检查mysqld在Linux上加载了哪些配置文件,可以运行以下命令:

strace–estat64mysqld–print–defaults>/dev/null

uptime

可以看到总计系统操作打印 uptime 命令显示的最后三个数字分别表示系统在 1 分钟、5 分钟和 15 分钟内的平均负载。

lsof

lsof(打开文件列表)是一个列出当前系统上打开的文件的工具。您可以使用 lsof 工具查看此列表以进行系统检测和故障排除。常见应用:

检查文件系统锁定

lsof/boot

检查端口号被哪个进程占用

lsof-i:3306

查看用户打开了哪些文件

ls 或 – username

查看进程打开了哪些文件

lsof–p4838

查看外部开放网络链接

lsof–i@192.168.34.128

perf

per f 是Linux内核自带的系统性能优化工具。优点在于与Linux内核的紧密结合。可以首先应用于内核添加的新功能,查看热门功能和cashe-miss比率,帮助开发者优化程序性能。

perf、Oprofile等性能调优工具的基本原理就是对监控对象进行采样。最简单的情况是基于tick中断进行采样,即在tick中断内激活采样点,并根据当时上下文的采样点来评估程序。

如果一个程序 90% 的时间都花在 foo() 函数中,那么它 90% 的样本点应该在 foo() 函数的上下文中。幸福是难以捉摸的,但我想只要采样率足够高,采样时间足够长,上面的推论就会更加可靠。因此,通过激活逐项检查采样,我们可以了解程序的哪些部分花费的时间最多,并重点分析。

总结

通过结合上面性能测试常用的命令,联系文章开头的性能分析工具图,可以初步了解性能过程中哪个工具(命令)使用了哪方面的性能分析过程。

常用性能测试工具

熟练掌握第二部分的性能分析命令工具,介绍各种性能测试工具。在开始介绍之前,我们先简单了解一下几个性能测试工具:

  • perf_events:一种随Linux内核代码一起发布和维护的性能诊断工具,由内核社区维护和开发。 Perf不仅可以用于应用程序性能统计分析,还可以用于性能统计和内核代码分析。

  • eBPF Tools:使用bcc的性能跟踪工具,eBPF Map可广泛用于使用自定义eBPF程序的内核调优,还可以读取用户级异步代码。最重要的是,这些外部数据可以在用户空间中进行管理。这种k-v格式的地图数据是通过调用用户空间的bpf系统调用进行创建、添加、删除等操作来管理的。

  • perf-tools:基于perf_events(perf)和ftrace的用于性能分析和调优的Linux工具集。 Perf-Tools 几乎没有库依赖性并且易于使用。支持Linux 3.2及以上内核版本。

  • bcc(BPF Compiler Collection)::使用eBP F的性能分析工具。用于创建高效的内核跟踪和操作程序的工具包,包括几个有用的工具和示例。利用扩展 BPF(伯克利数据包过滤器),正式名称为 eBPF,这是 Linux 3.15 中首次添加的新功能。多功能需要 Linux 4.1 或更高版本的 BCC。

  • ktap:一种新的 Linux 脚本动态性能跟踪工具。允许用户监控Linux内核动态。 ktap 被设计为可互操作,允许用户微调操作见解、解决问题以及扩展内核和应用程序。它类似于 Linux 和 Solaris DTrace SystemTap。

  • Flame Graphs:是一款使用perf、system tap、ktap可视化的图形软件,可以快速准确地识别最常见的代码路径,可用于github.com/brendangregg/flamegraph 开发源代码的程序生成。

Linux观察工具 |Linux性能观察工具

linux性能分析工具整理,用不好服务器就是废物

  • 第一次学习的基本工具如下:uptime、top(htop)、mpstat、isstat、vmstat、free、ping 、nicstat、dstat 。

  • 高级命令如下:sar、netstat、pidstat、strace、tcpdump、blktrace、iotop、slabtop、sysctl、/proc。

Linux 基准测试工具 | Linux性能评估工具

linux性能分析工具整理,用不好服务器就是废物

是一个性能评估工具。您可以使用相关的工具来测试不同模块的性能。

Linux 调优工具 | Linux性能调优工具

linux性能分析工具整理,用不好服务器就是废物

是一个性能调优工具,主要从Linux内核的源代码层进行调优。如果您想了解更多信息,请参阅本文档下方的附件。

Linux 可观测性 sar | Linux性能观察工具

linux性能分析工具整理,用不好服务器就是废物

sar(System Activity Reporter系统活动报告)是目前LINUX上最全面的系统性能分析工具之一,可以从多个方面对系统进行分析。报告活动包括:文件读写、系统调用使用情况、磁盘 I/O、CPU 效率、内存使用情况、进程活动和 IPC 相关活动。 sar的一般用法:

sar[options][-A][-ofile]t[n]

其中:t为采样间隔,n为样本数,默认值为1; -o file 表示将命令的结果以二进制格式保存到文件中,其中file是文件名。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门