You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统中排查过去2天CPU突增问题的命令咨询

Ubuntu系统中排查过去2天CPU突增问题的命令咨询

你好,我特别理解生产环境不能随意安装第三方工具(比如htop/atop)的限制,毕竟稳定性是第一位的。针对你要排查过去2天CPU突增问题的需求,我来给你几个贴合Ubuntu环境的可行方案:

一、先纠正你之前的无效操作

你之前尝试用sar输出结合xargs ps的方法没效果,是因为sar默认输出的是系统级CPU使用率数据,里面根本没有进程PID,所以ps命令自然找不到对应进程,这个思路从一开始就走不通啦。

二、基于现有sysstat工具(你已经在使用sar)的排查方案

sysstat包除了sar,还有sadf工具可以更灵活地解析历史日志,具体步骤如下:

  1. 定位CPU突增的精确时间段
    先用你的原命令找出哪个时间段CPU异常:

    sar -f /var/log/sa/sa$(date +%d -d "2 days ago")
    

    这个命令会输出当天按时间间隔统计的系统CPU使用率,你可以重点关注%user、%system列数值突增的时间点,比如发现14:30:01左右CPU使用率从10%跳到80%。

  2. 尝试关联进程数据(前提是系统提前配置了进程级统计)
    如果你之前在/etc/default/sysstat中配置了SA1_OPTIONS包含进程统计(比如SA1_OPTIONS="-S XALL"),那sar日志里会有进程级数据,这时候可以用sadf导出并过滤高CPU进程:

    sadf -p /var/log/sa/sa$(date +%d -d "2 days ago") -- -u -P ALL | awk '$5 > 50 {print $0}'
    

    这里的$5对应%CPU列,50是阈值,你可以根据实际情况调整,输出结果里会包含PID和对应的CPU使用率。

三、利用系统内置的进程记账功能(acct)

如果你的生产环境已经安装了acct工具(默认可能没装,但如果允许临时安装的话也可以试试),可以通过它查看过去执行的进程及其CPU使用情况:

  1. 启用进程记账(如果还没开启的话):
    accton /var/log/account/pacct
    
  2. 按CPU使用率排序查看历史进程:
    lastcomm --sort=cpu
    
    要注意的是,如果是2天前的记录,需要确保记账日志没有被系统的日志轮转机制清理掉。

四、结合系统日志关联排查

如果上面的方法都拿不到直接的进程数据,只能通过时间段+系统日志反向推导:

  • 用sar定位到CPU突增的时间段后,去查看对应时间点的系统日志,比如:
    grep "2024-05-20 14:2[5-35]" /var/log/syslog
    
    替换成你找到的具体时间范围,看看有没有异常进程启动、崩溃、大量fork的记录;
  • 同时可以检查/var/log/auth.log(登录相关)、/var/log/kern.log(内核日志),或者业务服务的专属日志,有没有和CPU突增时间点匹配的异常活动。

备注:内容来源于stack exchange,提问作者Sameer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 09:49:37