博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
当load飙升时问题排查思路
阅读量:6815 次
发布时间:2019-06-26

本文共 1323 字,大约阅读时间需要 4 分钟。

load:系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

  - 它没有在等待I/O操作的结果

  - 它没有主动进入等待状态(也就是没有调用’wait’)

  - 没有被停止(例如:等待终止)

我们可以通过系统命令uptime、w、top等查看当前load average情况

 [root@CNC-BJ-5-3N1 ~]# w

20:01:55 up 76 days,  8:20,  6 users,  load average: 1.30, 1.48, 1.69

  • 第一位1.30:表示最近1分钟平均负载

  • 第二位1.48:表示最近5分钟平均负载

  • 第三位1.69:表示最近15分钟平均负载

PS. linux系统是5秒钟进行一次Load采样

      load统计的是总的数据,需要每个看到的数值都除以逻辑cpu数,然后和0.7对比。重点看15分钟,也就是第三个数值。

查看cpu

1、查看CPU信息

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

物理CPU:主板上实际插入的cpu数量

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu核数:单块CPU上面能处理数据的芯片组的数量

# 查看逻辑CPU的个数

cat /proc/cpuinfo| grep "processor"| wc -l

逻辑cpu数:一般情况下,逻辑cpu=物理CPU个数×每颗核数,如果不相等的话,则表示服务器的CPU支持超线程技术(HT:简单来说,它可使处理器中的1 颗内核如2 颗内核那样在操作系统中发挥作用。这样一来,操作系统可使用的执行资源扩大了一倍,大幅提高了系统的整体性能,此时逻辑cpu=物理CPU个数×每颗核数x2)

# 查看CPU信息(型号)

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

----------------------------------------------------------------------------------------------------------------------

排查思路:

1、top 查看当前cpu情况,找到占用cpu过高的进程PID,如123

2、top -Hp123 找出占用cpu过高的线程,记录下PID 如1,2,转换成十六进制。printf "%x\n" 21742

3、jstack -l 123>test.txt打印出当前进程的线程栈。

4、查找到对应第二步两个线程运行栈,分析代码。

实际

转载于:https://www.cnblogs.com/danyuzhu11/p/10419190.html

你可能感兴趣的文章
3.26作业
查看>>
Python里的append和extend
查看>>
cut命令
查看>>
JavaScript强化教程-cookie对象
查看>>
MEMCACHE常用的命令
查看>>
docker 基础
查看>>
Angular基础(七) HTTP & Routing
查看>>
使用Freeline提高你的工作效率
查看>>
FTP服务器
查看>>
爬百度新闻
查看>>
TCP协议与UDP协议的区别
查看>>
软件定时器算法
查看>>
pt-archiver 数据删除、迁移工具使用
查看>>
下载网站地址
查看>>
桌面虚拟化浅谈
查看>>
我的友情链接
查看>>
将 TensorFlow 移植到 Android手机,实现物体识别、行人检测和图像风格迁移详细教程...
查看>>
Hyper-V 自动化支持技术
查看>>
VS2010启动调试时报“未能将脚本调试器附加到计算机”
查看>>
Python中的一些面试题(2)
查看>>