sysdig 超级系统工具、sar

一、Sysdig

是一个超级系统工具,比 strace、tcpdump、lsof 加起来还强大。可用来捕获系统状态信息,保存数据并进行过滤和分析。使用 Lua 开发,提供命令行接口以及强大的交互界面。

安装

1
https://www.cnblogs.com/NiceTime/p/7640558.html

使用示例

1、网络

查看占用网络带宽最多的进程

sysdig-probe-loader (不执行,下面会报错)

1
2
3
4
5
sysdig -c topprocs_net
Bytes               Process             PID                
--------------------------------------------------------------------------------
18.03KB             prometheus          1408
388B                sshd                1495

显示主机192.168.0.1的网络传输数据

1
2
3
4
as binary:
sysdig -s2000 -X -c echo_fds fd.cip=192.168.0.1
as ASCII:
sysdig -s2000 -A -c echo_fds fd.cip=192.168.0.1

查看连接最多的服务器端口

1
2
3
sysdig -c fdcount_by fd.sport "evt.type=accept"
 
sysdig -c fdbytes_by fd.sport

查看客户端连接最多的ip

1
2
sysdig -c fdcount_by fd.cip "evt.type=accept"
sysdig -c fdbytes_by fd.cip

列出所有不是访问apache服务的访问连接

1
sysdig -p"%proc.name %fd.name" "evt.type=accept and proc.name!=httpd"

2、应用

查看机器所有的HTTP请求

1
sudo sysdig -s 2000 -A -c echo_fds fd.port=80 and evt.buffer contains GET

查看机器所有的SQL select查询

1
sudo sysdig -s 2000 -A -c echo_fds evt.buffer contains SELECT

3、硬盘 I/O

查看使用硬盘带宽最多的进程

1
sysdig -c topprocs_file

列出使用大量文件描述符的进程

1
sysdig -c fdcount_by proc.name "fd.type=file"e

二、sar(System Activity Reporter 系统活动情况报告)

是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等。

我们可以使用sar命令来获得整个系统性能的报告。这有助于我们定位系统性能的瓶颈,并且有助于我们找出这些烦人的性能问题的解决方法。

Linux 内核维护着一些内部计数器,这些计数器包含了所有的请求及其完成时间和 I/O 块数等信息,sar命令从所有的这些信息中计算出请求的利用率和比例,以便找出瓶颈所在。

性能问题排查技巧:

  • 怀疑 CPU 存在瓶颈,可用sar -usar -q等来查看。
  • 怀疑 内存存在瓶颈,可用sar -Bsar -rsar -W等来查看。
  • 怀疑 I/O 存在瓶颈,可用sar -bsar -usar -d等来查看。

sar命令来自于sysstat工具包,如果提示sar命令不存在,需先安装sysstat

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
语法:sar [选项] [参数]
 
选项:
    -A:显示所有的报告信息;
    -b:显示I/O速率;
    -B:显示换页状态;
    -c:显示进程创建活动;
    -d:显示每个块设备的状态;
    -e:设置显示报告的结束时间;
    -f:从指定文件提取报告;
    -i:设状态信息刷新的间隔时间;
    -n:网络统计信息;
    -R:显示内存状态;
    -P:报告每个CPU的状态;
    -u:显示CPU整体的利用率;
    -v:显示索引节点,文件和其他内核表的状态;
    -w:显示交换分区状态;
    -x:显示给定进程的状态。
 
参数:
    间隔时间:每次报告的间隔时间(秒);
    次数:显示报告的次数。

常用用法

  • sar [command] 2 5:每2秒输出一次 sar [command],总计输入五次,省略5表示持续输出。

  • sar -n DEV 1 -e 22:26:00 >/tmp/123 &:每秒采样一次网络情况直到22:26并把采样数据输出到/tmp/123。

  • sar -f /var/log/sa/sa27 -s 23:00:00 -e 00:00:00 -r:本月27日23点至0点的内存数据,需要通过crontab设置定时任务。

1、CPU 状态统计

-P {CPU_LIST | ALL}:用于分析多核CPU的性能状况,可以使用CPU_LIST分析指定核心的CPU状态,可以使用离散值和连续值,也可以使用ALL分析所有CPU核心状态。

1
2
3
4
5
6
7
8
# sar -P 0 1 3  # 表示每秒采集0号CPU状态,总共采样3次。
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7)    12/21/2022  _x86_64_    (4 CPU)
 
11:15:32 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
11:15:33 AM       0      2.97      0.00      0.99      0.00      0.00     96.04
11:15:34 AM       0      1.02      0.00      1.02      0.00      0.00     97.96
11:15:35 AM       0      2.00      0.00      2.00      0.00      0.00     96.00
Average:          0      2.01      0.00      1.34      0.00      0.00     96.66
  • CPU:0 表示采集的是 0 号CPU,all 表示统计信息为所有 CPU 的平均值。
  • %user:指运行非特权用户进程时间百分率。
  • %nice是指运行特权用户进程时间百分率
  • %system:是指运行内核进程时间,这个时间包括了CPU处理软硬中断的时间。
  • %iowait:是指等待I/O完成的时间。
  • %steal是指运行虚拟机的时间百分率,steal意味着被偷走的时间(一般是0)
  • %idle是指cpu空闲时间百分率,若机器上并未运行任何程序,所以此列一直为100%。

注意说明:

  1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈。
  2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。
  3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

-q:用于报告队列长度以及平均负载。

1
2
3
4
5
6
7
8
# sar -q 1 3
Linux 3.10.0-1160.11.1.el7.x86_64 (template-centos7)    12/21/2022  _x86_64_    (4 CPU)
 
11:21:52 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
11:21:53 AM         1       274      0.01      0.05      0.05         0
11:21:54 AM         2       274      0.01      0.05      0.05         0
11:21:55 AM         1       274      0.01      0.05      0.05         0
Average:            1       274      0.01      0.05      0.05         0
  • runq-sz:等待cpu调度的任务数。
  • plist-sz:处于任务列表的任务总数。
  • ldavg-1ldavg-5ldavg-15:分别指1分钟,5分钟,15分钟内cpu的负载。
  • blocked:表示等待I/O完成而被阻塞的任务总数,不为0则需要留意I/O是否存在性能瓶颈。

 

 

 

 

 

 

Linux 状态命令之 sar_linux sar_奔跑的大西吉的博客-CSDN博客

https://www.oschina.net/p/sysdig?hmsr=aladdin1e1

 

posted @   凡人半睁眼  阅读(262)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探
历史上的今天:
2019-10-21 Rocky、centos8

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示