Linux 怎么使用 pidstat 监控高吞吐量日志收集服务的开销

夜丽姑娘_8304

夜丽姑娘_8304

2026-09-10

932人浏览

原创

监控日志服务需用pgrep精准定位多实例pid,结合pidstat -p "$(pgrep -f '...')" -u -r -d 0.5 -l采集cpu、内存、io指标,重点分析%usr/%system、rss/majflt/s、kb_wr/s/kb_rd/s及nvcswch/s等异常模式,并通过-h、--human和awk实现长期趋势分析与可读性优化。

linux 怎么使用 pidstat 监控高吞吐量日志收集服务的开销

监控高吞吐量日志收集服务(如 Filebeat、Fluentd、Logstash 或自研 agent)的关键在于:既要捕获瞬时资源尖峰,又要避免采样过密拖慢系统,还得区分真实负载和内存映射开销。pidstat 本身不“适配”日志服务,但用对参数就能看清它到底在忙什么。

锁定目标进程,别靠肉眼 grep

日志服务常以多实例、守护进程或容器方式运行,PID 可能动态变化。直接 ps + 手动抄 PID 容易漏掉或错配:

  • 用 pgrep -f 匹配完整命令行,更准: pgrep -f "filebeat.*-e" 或 pgrep -f "fluentd.*--config"
  • 把结果直接喂给 pidstat,支持多 PID: pidstat -p "$(pgrep -f 'filebeat')" -u -r -d 0.5 (-u CPU、-r 内存、-d IO,0.5 秒间隔捕捉短时峰值)
  • 加 -l 显示完整命令行,确认是不是你要的那个实例: pidstat -l -p "$(pgrep -f 'log_agent')" 1

重点盯住三类指标,而非只看 %CPU

日志服务的瓶颈往往不在 CPU,而在内存增长、磁盘写放大或上下文切换抖动:

linux-performance-analyzer
linux-performance-analyzer

Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。

下载
  • CPU 细分:关注 %usr(解析/编码耗时) vs %system(系统调用,如 write()、fsync())。若 %system 高于 %usr,说明卡在内核态——可能是频繁刷盘或锁竞争。
  • 内存趋势:RSS 持续上涨需警惕;但先查 minflt/s(次缺页)是否同步飙升——若否,可能是 mmap 映射日志文件或 JVM 堆外内存,属正常行为;若是,则真有泄漏。
  • I/O 模式:看 kB_wr/s 是否接近磁盘吞吐上限;再比对 kB_rd/s —— 如果读远高于写,说明在重放缓冲区或回溯历史日志,不是常态。

识别典型异常模式

日志服务跑着跑着变慢?pidstat 输出里这些信号值得立刻排查:

  • RSS 突增 + majflt/s > 0:进程正在大量加载新日志文件到内存,可能触发 swap 或 OOM Killer。
  • nvcswch/s(非自愿切换)持续 > 1000/s:线程被内核强占,常见于 CPU 资源争抢或锁等待,检查是否与其它高优先级任务共用 CPU 核。
  • %CPU 接近 100% 但 kB_wr/s 很低:CPU 被压缩、加密或正则匹配吃掉,I/O 并未饱和,可考虑降级处理逻辑或启用异步写入。
  • VSZ 远大于 RSS(比如 2GB vs 200MB):进程预留了大量虚拟地址空间(如 mmap 日志目录),只要 RSS 稳定就不必惊慌。

长期观察建议加时间戳和导出

单次终端查看不够,建议记录小时级趋势:

  • 加 -H 开启高精度时间戳(微秒级),方便对齐其他日志: pidstat -p "$(pgrep filebeat)" -r -H 5 >> filebeat_mem.log
  • 用 --human 让内存单位自动转 MB/GB,阅读友好: pidstat --human -p "$(pgrep fluentd)" -r 10
  • 配合 awk 提取关键字段做简单聚合: pidstat -p "$(pgrep logstash)" -u 1 | awk '/^[0-9]/ {print $1,$5,$6,$9}'(PID、%usr、%system、Command)

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3650

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3173

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2233

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5330

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5002

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2993

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2505

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2719

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习