liunx命令查看cpu使用率和负载情况

本文介绍了一种在Linux环境下排查高CPU使用率的方法,包括使用top命令查看资源使用情况,定位消耗CPU的进程和线程,以及使用jstack获取线程堆栈信息。此外,还介绍了使用Arthas工具简化排查过程。

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

1、先top -c查看资源使用情况

第一行tasks表示第一行: 系统时间  + 系统运行时间 + 几个用户 +  1/5/15分钟系统平均负载

第二行:进程总数(total) + 正在运行进程数(running) + 睡眠进程数(sleeping) + 停止的进程数(stopped)+ 僵尸进程数(zombie)

第三行:用户空间CPU占比(us) + 内核空间CPU占比(sy)+ CPU空置率(id)

第4行第5行表示内存和虚拟内存使用情况:

下面代表的是进程,

PID :进程ID,USER :用户名,PR :优先级,NI :负值表示高优先级,正值表示低优先级。,VIRT :虚拟内存,

RES : 真实内存,SHR :共享内存,S :进程状态 D=不可中断的睡眠状态; R=运行; S=睡眠 ;T=跟踪/停止; Z=僵尸进程

 2、线上cpu使用率很高如何排查

  1. 输入top -c 就可以显示进程列表,然后输入P,按照cpu使用率排序,你会看到类似下面的东西
  2. 然后根据最耗费cpu的进程定位该进程下耗费cpu的线程,top -Hp pid(进程id),然后输入P按照cpu使用率对线程排序
  3. 因为liunx中打印出的线程id是10进制的所以,先转换成为16进制的,用命令 printf "%x\n"  tid(22828)
  4. 然后用jstack查看高cpu的线程的堆栈信息,可以打印出代码里是哪个类的那个方法导致cpu较高的。
  5. jstack pid(22772) | grep 592c -C5 --color

总结下来共分为4步:

1、top 或者top -c 查看进程(输入大写P按进程按耗时倒序)
2、top -Hp pid 查看该进程下的现成(输入大写P按进程按耗时倒序)
3、print '%x\n' tid(线程id,该步骤是将线程ID转换为16进制)
4、jstack pid | grep tid(第3步转换为16进制的id) -C 50 (或者是-C --color)
  1. jstack使用方法

缺点:如果一个机器的cpu使用率飙升,通过上面方式排查比较麻烦,对于步骤二如果top之后发现有多个线程的cpu占有率比较高,并且cpu只是短暂的飙升,那么这个方法耗时比较久。可能找到所有的线程之后打出堆栈,cpu使用率飙升现场已经没有了。所以才给出了方法二进行排查,方法比较简单。

方案二

安装arthas:curl -L http://start.alibaba-inc.com/install.sh | sh

通过使用arthas对应的命令thread -n 找到cpu使用率top n的线程,并且打印出堆栈。通过arthas,我们可以使用一个命令就完成上面四个步骤的工作,比较简单方便

### 查看Linux系统中CPU负载使用率的常用方法 在Linux系统中,有多种命令可以帮助用户查看CPU负载使用率。这些工具各有特点,适用于不同的场景。 #### 1. `uptime` 命令 `uptime` 是一个简单的命令,用于显示系统的运行时间平均负载情况。它会返回过去1分钟、5分钟以及15分钟内的平均负载值[^1]。 ```bash uptime ``` #### 2. `w` 命令 除了提供系统的运行时间外,`w` 还能展示当前登录用户的活动状态以及系统的平均负载信息。它的输出包括最近1分钟、5分钟15分钟的平均负载数据[^2]。 ```bash w ``` #### 3. `top` 命令 `top` 是一个功能强大的实时监控工具,它可以动态地显示各个进程的资源占用情况,其中包括CPU使用率的信息。尽管此命令非常有用,但它本身也会消耗一定的系统资源,在高负载情况下可能不建议频繁使用。 ```bash top ``` #### 4. `vmstat` 命令 `vmstat` 可以报告关于虚拟内存、处理器活动其他性能指标的数据。通过指定间隔秒数来持续观察变化趋势。例如每两秒钟刷新一次并连续采集三次记录: ```bash vmstat 2 3 ``` 这有助于了解一段时间内CPU的状态变化[^4]。 #### 5. `/proc/loadavg` 文件读取 可以直接从文件系统获取最新的负载均值信息而无需依赖额外软件包安装。这种方法效率较高且不会增加太多开销。下面是如何解析该路径下内容的一个例子: ```bash cat /proc/loadavg ``` 以上操作将直接打印出类似于`uptime`所提供的三个时间段上的加权平均负荷数值。 #### 6. `mpstat` 工具 (需安装sysstat) 对于更详细的多核处理单元分析,则推荐利用专门设计用来统计各单独核心表现状况的应用程序—`mpstat` 。要实现这一目的首先得确认已预装好相应套件;之后便可通过如下指令获得详尽的结果集: ```bash sudo apt-get install sysstat # 如果尚未安装的话先完成部署过程 mpstat -P ALL # 显示每一个物理逻辑cpu的具体工作百分比分布详情 ``` #### 排查CPU过高问题 当遇到CPU使用率达到极限的情况时,可以通过组合运用上述提到的一些手段来进行诊断。比如借助于`top`快速锁定嫌疑目标进程ID号后再进一步深入研究其背后原因所在之处等等[^3]。 ### 结论 综上所述,针对不同需求可以选择合适的方案去监测Linux服务器内部运转情形下的中央处理器健康度指数水平。无论是简易型还是高级别的解决方案都能满足日常运维工作中所面临挑战的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值