精华内容
下载资源
问答
  • 线上服务器CPU负载过高的问题解决过程 一.找到CPU占用过高进程 执行top命令,发现PID为12443的Java进程占用CPU高达350%,出现故障。 二.定位具体线程或代码 找到该进程后,接下来要定位具体的线程或代码。首先...

    线上服务器CPU负载过高的问题解决过程

    一.找到CPU占用过高进程

    执行top命令,发现PID为12443的Java进程占用CPU高达350%,出现故障。

    二.定位具体线程或代码

    找到该进程后,接下来要定位具体的线程或代码。首先我们使用如下命令来显示线程列表,并按照CPU占用高的线程排序:

    [root@localhost logs]# ps -mp  12443 -o THREAD,tid,time | sort -rn

    显示结果如下:

    USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
    root     10.6  17    - -         -      -  1838 10:12:20
    root     10.2  17    - -         -      -  3223 10:12:16

    找到了耗时最高的线程1838,占用CPU时间有12分钟了!

    或者使用 top -Hp pid(shift+p 按cpu排序,shift+m 按内存排序)命令来定位:

    top -Hp 8958

    获取到这个进程下面所有线程,通过查看%CPU找到最耗费CPU的是线程PID

    将需要的线程ID转换为16进制格式:

    [root@localhost logs]# printf "%x\n" 1626
    e18

    最后打印线程的堆栈信息:在执行 jstack -l [PID] > /tmp/output.txt 之后可以对 /tmp/output.txt 进行分析

    开头交代当前 dump 的时间和 JVM 基本信息

    2019-06-12 16:13:06
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.152-b16 mixed mode):

    接下来就是程序的线程信息

    "JetCacheHeavyIOExecutor3" #85 daemon prio=5 os_prio=0 tid=0x00007f76a93ab800 nid=0x1c47a waiting on condition [0x00007f7696acb000]
       java.lang.Thread.State: WAITING (parking)
    	at sun.misc.Unsafe.park(Native Method)
    	- parking to wait for  <0x00000000c9863140> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
    	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
     
       Locked ownable synchronizers:
    	- None

    将输出的信息进行匹配就能找出有问题的代码。

     

    展开全文
  • linux 排查cpu负载过高异常,找到最耗CPU的进程,找到最耗CPU的线程,将线程PID转化为16进制
  • CPU负载过高排查与解决

    千次阅读 2019-05-17 17:13:12
    2.top -Hp [pid] 查看是进程下的哪个线程导致cpu过高的 top -Hp 9729 3.jstack [pid]|grep [线程id的16进制] jstack 9729|grep -i -B 10 -A 50 262b 上图的9771 转换为16进制是(可以用电脑自带的计算器...

    1.linux下top看一下是不是Java进程导致的

    在这里插入图片描述

    2.top -Hp [pid] 查看是进程下的哪个线程导致cpu过高的

    top -Hp 9729
    

    在这里插入图片描述

    3.jstack [pid]|grep [线程id的16进制]

    jstack 9729|grep -i -B 10 -A 50 262b
    

    上图的9771 转换为16进制是(可以用电脑自带的计算器转换) 262b
    grep -i -B 10 -A 50 262b
    -i 表示忽略大小写 -B 10 找到关键字262b显示其前10行 -A 50 找到关键字262b显示其后50行
    在这里插入图片描述
    我这里因为优化过所以看不到什么问题

    给个有问题的
    在这里插入图片描述

    看到locked就是有问题的,locked下面的就是导致locked的代码,我这一看是tomcat导致的的。。。。

    tomcat的都没跑起来啊,很明显配置给低了,我是自己的虚拟机。

    当然如果是错误代码是你们自己写的代码那自己去看看代码逻辑进行优化

    至此
    感谢!

    展开全文
  • 服务器CPU负载过高,如何定位问题

    千次阅读 2019-05-21 17:43:18
    CPU负载过高解决问题过程: 1,根据top命令,发现PID为12433的Java进程占用CPU高达300%,出现故障。 2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序: [root@localhost ...

    CPU负载过高解决问题过程:
    1,根据top命令,发现PID为12433的Java进程占用CPU高达300%,出现故障。

    2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
    [root@localhost logs]# ps -mp  12433 -o THREAD,tid,time | sort -rn

    显示结果如下:
    USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
    root     10.5  19    - -         -      -  1626 00:12:48
    root     10.1  19    - -         -      -  3293 00:12:16

    找到了耗时最高的线程1626,占用CPU时间有12分钟了!

    或者

    2、使用 top -Hp pid(shift+p 按cpu排序,shift+m 按内存排序)
    top -Hp 8958
    获取到这个进程下面所有线程,通过查看%CPU找到最耗费CPU的是线程PID

     

    将需要的线程ID转换为16进制格式:
    [root@localhost logs]# printf "%x\n" 1626
    e18

    最后打印线程的堆栈信息:在执行 jstack -l [PID] > /tmp/output.txt 之后可以对 /tmp/output.txt 进行分析

    开头交代当前 dump 的时间和 JVM 基本信息

    2019-06-12 16:13:06
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.152-b16 mixed mode):

    接下来就是程序的线程信息

    "JetCacheHeavyIOExecutor3" #85 daemon prio=5 os_prio=0 tid=0x00007f76a93ab800 nid=0x1c47a waiting on condition [0x00007f7696acb000]
       java.lang.Thread.State: WAITING (parking)
    	at sun.misc.Unsafe.park(Native Method)
    	- parking to wait for  <0x00000000c9863140> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1088)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
    	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    	at java.lang.Thread.run(Thread.java:748)
    
       Locked ownable synchronizers:
    	- None
    


    将输出的信息进行匹配就能找出有问题的代码。

     

    其他文章参考:JVM找出占用CPU最高的线程 https://blog.csdn.net/notsaltedfish/article/details/80209538

                             结合top和jstack找出占用cpu最高的堆栈信息  https://blog.csdn.net/u012448083/article/details/76855340

    展开全文
  • CPU负载过高怎么办

    千次阅读 2019-08-13 10:10:04
    1、CPU负载过高 排错思路: 1>查看机器性能,看是否是系统负载的问题 2>查看项目日志,发现开发代码里有大量的日志输出 通过top -c命令查看进程信息,找出问题进程内负载过高的线程id 在通过jstack命令查...

    排错思路:
    1>查看机器性能,看是否是系统负载的问题
    2>查看项目日志,发现开发代码里有大量的日志输出

    • 通过top -c命令查看进程信息,找出问题进程内负载过高的线程id
    • 在通过jstack命令查到对应的线程,定位到代码
    • 翻阅日志的中间件,发现可疑(在写入log之前为了判断log的文件名是否已经存在进行了整个文件夹下文件的遍历)
    • 查文件输出目录(整个文件夹下文件大小达到近100G,国内版本最多也就是几个G)
    • 分析原因,得知这个地方国内和港台版本有差异,运维有个策略,就是会定期删掉固定时长之前的日志,而恰恰港台版本没有开启这个定时任务
    展开全文
  • 如何处理CPU负载过高

    万次阅读 2018-03-15 09:49:08
    第一步:找到占用CPU过高的进程的pid 使用top命令,然后按shift+p按照CPU排序 第二步:找到进程中消耗资源最高的线程的id 使用top -H -p [进程id] 第三步:将线程id转换为16进制(字母要小写) 使用echo 'obase=...
  • 排查cpu负载过高方法

    2020-11-23 10:59:03
    排查cpu负载过高方法对比 传统的方案一般是4步: top oder by with P:1040 // 首先按进程负载排序找到 maxLoad(pid) top -Hp 进程PID:1073 // 找到相关负载 线程PID printf “0x%x\n”线程PID: 0x431 // 将线程...
  • linux 排查cpu负载过高原因

    千次阅读 2019-11-05 11:37:58
    CPU负载查看方法: 使用vmstat查看系统维度的CPU负载 使用top查看进程维度的CPU负载 使用 vmstat 查看系统纬度的 CPU 负载: 可以通过 vmstat 从系统维度查看 CPU 资源的使用情况。 用法说明: 格式:vmstat -n 1#...
  • 2.使用ps -ef或者jps进一步定位,得知是一个怎么样的一个后台程序造成CPU负载过高 3.定位到具体线程或者代码 3.1 ps -mp 进程号 -o THREAD,tid,time 上图中定位到线程5102cpu占用率较高。因此知道线程id为5102...
  • 解决PaintEvent时候CPU负载过高的问题

    千次阅读 2016-08-18 17:00:38
    当画面不停的需要刷新时,比如有计时器,那么painrEvent里如果再设置一些函数,比如画线函数的时候,那么就会使得整个PaintEvent函数需要不断刷新,导致CPU的占用率一直过高,在PC上还看不大出来问题,但是在嵌入式...
  • cpu负载过高案例,解决方法记录

    千次阅读 2016-03-06 16:26:01
    http://wukongdiary.com/index.php/archives/137/
  • CPU负载过高异常排查实践与总结

    千次阅读 2018-12-13 08:41:07
     昨天下午看到数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,看起来像是硬件资源到瓶颈需要扩容了,但仔细思考就会发现咱们的业务系统并不是一个并发或者CPU密集型的应用,这个利用...
  • cpu负载过高问题处理

    千次阅读 2019-03-07 11:44:54
    1、ps ux 哪些进程cpu占用率过高 2、ps -Lp 15047cu 查看该进程下的哪些线程占用率过高 3、将线程id 转换为16进制 https://tool.lu/hexconvert/ 4、jstack pid查找到对应的threadid, 再反查代码 知识点: top...
  • 这个是修复之后的,解决了已发现的BUG。服务器程序有时候不知道是什么原因导致CPU异常变,每次变都需要手工重启程序或服务,很麻烦,于是我就写...使用说明,可自定义CPU负载多少,持续多少秒,执行相关bat或程序。
  • cpu负载过高产生的原因及排查

    千次阅读 2019-12-24 11:11:49
    之前面试被问到,造成CPU load过高的原因有哪些?如何快速排查其原因? 开一贴,总结该相关知识 什么是cpu load 值 to...
  • 服务器CPU负载过高问题查询记录

    千次阅读 2019-06-08 14:32:06
    周四晚上,有一台服务器遇到一个很怪异的现象:有流量访问时,CPU负载升到100%,但是内存使用量不大,通过NGINX切流,不接受HTTP请求,服务器又自动恢复了,原本打算准时游泳的脚步,就被问题缠住了=-= 于是我们就...
  • 1、19号手动升级到wordpress4.1,21号早上7点看网站php探针,发现系统负载过高,差不多在1到1.5之间。 2、虽然对于双核处理器,这个值还可以接受,但是之间负载都只有0.2左右,而网站流量又没有突然增加很多,所以...
  • 1.TOP找到cpu使用率较的PID,  2.找到cpu只用率较的线程:  ps -mp pid -o THREAD,tid,time  3.转为16进制  printf "%x\n" thread_number 4.查询原因  jstack pid|grep 16进制thread_number ...
  • 当在一个物理机器上面分配多个虚拟机,并且虚拟机的cpu总和超过实际物理机器的cpu数量时,并且各个虚拟机在高负载的情况下,高负载的虚拟机会调用其他虚拟机器的资源这次发现的问题是我们公司某系统新上线了三台虚.....
  • 一次运维事故调查报告--cpu负载过高

    千次阅读 2017-10-21 18:07:21
    九月份的某个深夜,被电话吵醒,运维说线上某个版本的两个服务器由于系统资源耗尽(主要是系统CPU负载过高),宕机了,导致操作系统无法执行正常指令;我顿时激灵了一下,我嚓,我们是java开发的系统,即便有个内存...
  • 2017-11-05发生的情况。BCC的CPU负载过高导致服务停了,但是内存用量正常。CPU使用率用了44分钟增长到了100%。如下图: 查了一下,提示的是"java.lang.OutOfMemoryError: Java heap space",如下图:
  • 一个应用占用CPU,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。 根据top命令,发现PID为28555的 Java 进程占用CPU高达200%,...
  • 解决Linux 负载过高问题
  • linux CPU使用率过高或负载过高的处理思路1、查看系统CPU负载及使用率的命令为:top vmstat top 命令:查看进程级别的cpu使用情况。 vmstat 命令:查看系统级别的cpu使用情况。 下面通过具体的图例来分析: 1.1 ...
  • 最近在处理分布式环境(单台机器10个节点)中由于Java进程CPU负载过高导致其中某个节点挂点,而且不一定是哪一台的机器,刚开始还以为是某个很耗内存CPU的查询导致,但是看日志也没有看到有什么耗内存的查询,于是想...
  • Linux磁盘满了以及负载过高解决办法

    千次阅读 2018-02-09 09:15:54
    2. 负载过高 使用uptime命令查看机器负载。 uptime //输出 up 1 day, 23 : 14 , 2 users, load averages: 1.69 2.21 2.09 平均负载表示1、5、15分钟进程队列中的平均进程数量。一般单核大于3的话负载...
  • ORACLE服务器的CPU负载均衡过高 场景: 数据库版本:11.2.0.4 RAC;系统版本:Oracle Linux 6.4 巡检发现DDDRAC库CPU/负载均衡过高,load(15m)值达到了40以上,CPU值达到90%以上。 解决: 发现CPU和过载过高后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 158,248
精华内容 63,299
关键字:

cpu负载过高怎么解决