Linux服务器性能数据收集【sar、pidstat、iostat、mpstat、sadf、sadc】

本文介绍Linux下Sysstat工具集的安装及使用方法,包括sar、pidstat等工具,用于收集和分析CPU、内存及网络等性能数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux中的top,free等命令不能完全满足我们性能数据收集的要求,我们需要一个更加强大的工具来收集性能数据。经过考察和对比,发现Sysstat是一个非常强大的工具,因此下载了试了下,效果不错。Sysstat是一个工具集,包括sarpidstatiostatmpstatsadfsadc。其中sar是其中最强大,也是最能符合我们测试要求的工具,同时pidstat也是非常有用的东东,因此本文结合性能测试重点介绍这两个工具。

Sysstat的安装

从http://pagesperso-orange.fr/sebastien.godard/download.html下载最新版本,解压,安装

  •  wget http://pagesperso-orange.fr/sebastien.godard/sysstat-8.1.2.tar.gz
     tar zxvf sysstat
    -8.1.2.tar.gz
     cd sysstat
    -8.1.2
     .
    /configure
     make
     su
     <enter root password
    >
     make install
    								 
    						

监视某个进程

  1. 通过ps命令找到相应进程的PID:

    ps -e
  2. 使用pidstat命令监视进程,详细用法见:http://pagesperso-orange.fr/sebastien.godard/man_pidstat.html

    pidstat 2 5 
    //每隔2秒,显示5次,所有活动进程的CPU使用情况
    pidstat -3132 2 5 
    //每隔2秒,显示5次,PID为1643的进程的CPU使用情况显示
    pidstat -3132 2 5 -r
    //每隔2秒,显示5次,PID为1643的进程的内存使用情况显示
    								 
    						
  3. 很可惜的是,pidstat命令没有保存性能数据的功能。

查看性能数据

在sysstat工具包中,sar是最强大的了,通过sar几乎可以监视所有的性能数据,同时,sar还支持将性能数据保存起来。
sar详细用法请见:http://pagesperso-orange.fr/sebastien.godard/man_sar.html

  1. 查看CPU使用情况

    sar 2 5
    //每隔2秒,显示5次,CPU使用的情况
    								 
    						
  2. 查看内存使用情况

    sar -2 5
    //每隔2秒,显示5次,内存使用的情况
    								 
    						
  3. 查看网络吞吐量

    sar -n DEV 2 5
    //每隔2秒,显示5次,网络吞吐量情况

保存性能数据

sar支持保存成两种格式的文件,一种是文本文件,一种是二进制文件(只有通过sar自己的命令才能查看)。

  1. 保存为文本文件

    结合上面的查看命令,加入 > filename 参数即可保存文本文件,下面列出几个有用的命令:

    sar 1 10 > data.txt
    //每隔1秒,写入10次,把CPU使用数据保存到data.txt文件中。
    sar 1 0 -15:00:00 > data.txt
    //每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为hh:mm:ss格式)
    sar 1 0 --15:00:00 > data.txt
    //每隔1秒记录内存使用情况,直到15点,数据将保存到data.txt文件中。
    sar 1 0 -n DEV -15:00:00 > data.txt
    //每隔1秒记录网络使用情况,直到15点,数据将保存到data.txt文件中。
    								 
    						
    用WinSCP工具从Linux服务器上取下data.txt文件,内容如下:

    Linux 2.6.18-53.el5 (Performancesvr5)  2008年05月05日     _x86_64_

     11时04分05秒     CPU     
    %user     %nice   %system   %iowait    %steal     %idle
     11时04分06秒     all      
    0.25      0.00      0.00      0.00      0.00     99.75
     11时04分07秒     all      
    0.00      0.00      0.25      0.00      0.00     99.75
     11时04分08秒     all      
    0.25      0.00      0.25      1.50      0.00     98.00
     11时04分09秒     all      
    0.25      0.00      0.00      0.50      0.00     99.25
     11时04分10秒     all      
    0.00      0.00      0.00      0.00      0.00    100.00
     11时04分11秒     all      
    0.25      0.00      0.25      0.00      0.00     99.50
     11时04分12秒     all      
    0.00      0.00      0.25      0.00      0.00     99.75
     11时04分13秒     all      
    0.50      0.00      0.50      0.99      0.00     98.01
     11时04分14秒     all      
    0.00      0.00      0.00      1.25      0.00     98.75
     11时04分15秒     all      
    0.50      0.00      0.00      0.00      0.00     99.50
     平均时间:     all      
    0.20      0.00      0.15      0.42      0.00     99.23
    								 
    						
    有了这份数据,就可以轻松的使用WPS表格来统计CPU的使用情况了。


  2. 保存为二进制文件

    由于保存的二进制文件只有sar通过-f参数才能打开,不利于我们分析和统计数据,因此不推荐使用这个方法。保存二进制文件的参数是-o,如:

    sar 1 5 --o data
    //每隔1秒,写入5次,将内存使用的数据写入二进制文件data中。
    sar -f data
    //查看data文件

        官方资料:http://pagesperso-orange.fr/sebastien.godard/documentation.html

### 使用 DeepSeek 进行性能测试 对于希望利用 DeepSeek 提升开发流程中的性能测试环节,开发者能够借助其强大的功能来优化这一过程[^2]。 #### 准备工作 确保环境配置正确无误,在开始之前安装必要的依赖库。这通常涉及设置特定版本的 Python 解释器以及相关工具链。此外,还需确认目标应用程序已部署完毕且处于可访问状态。 #### 配置测试计划 创建详细的测试方案文档,定义预期达到的目标和服务水平协议(SLA),明确指出哪些指标最为重要——比如响应时间、吞吐量或是错误率等。这些都将作为后续评估的基础依据。 #### 编写自动化脚本 采用编程方式构建模拟真实场景下的负载压力模型。Python 是一种理想的选择,因为它拥有丰富的第三方库支持网络请求操作: ```python import requests from time import perf_counter def measure_performance(url, iterations=100): start_time = perf_counter() for _ in range(iterations): response = requests.get(url) if response.status_code != 200: raise Exception(f"Request failed with status {response.status_code}") end_time = perf_counter() elapsed_time = (end_time - start_time) / iterations return f'Average request duration over {iterations} runs was {elapsed_time:.4f}s' ``` 此函数 `measure_performance` 可用于测量给定 URL 的平均处理速度,并返回每次调用所需的时间长度。 #### 执行与监控 运行上述编写的脚本并对输出数据进行收集整理。期间密切关注服务器资源消耗情况(CPU利用率、内存占用),以便及时调整策略或发现潜在瓶颈所在。 #### 结果分析 最后一步是对获取的数据进行全面解析,对比最初设定的标准看是否满足要求。如果未能达标,则需深入探究原因并采取相应措施改进;反之则总结经验教训为将来类似项目积累宝贵资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值