一个load飙高的过程分析,非常有价值(转)

简介: 关于us高和sy高的问题分析: 当us值过高时,表示运行的应用消耗大量的CPU。java应用造成us高的原因主要是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞、循环、正则或纯粹的计算等任务造成的;另外一个可能也会造成us高的原因是频繁GC。

 

关于us高和sy高的问题分析:

当us值过高时,表示运行的应用消耗大量的CPU。java应用造成us高的原因主要是线程一直处于可运行(Runnable)状态,通常这些线程在执行无阻塞、循环、正则或纯粹的计算等任务造成的;另外一个可能也会造成us高的原因是频繁GC。

当sy值高时,表示linux花费了更多的时间在进行java线程切换。java应用造成这种现象的主要原因是启动的线程比较多,且这些线程多数处于不断的阻塞(例如锁等待,IO等待状态)和执行状态的变化过程中,这就导致了操作系统要不断地切换执行的线程,产生大量的线程上下文切换。

 

 

对于jstack做的ThreadDump的栈,可以反映如下信息。

如果某个相同的call stack经常出现, 我们有80%的以上的理由确定这个代码存在性能问题(读网络的部分除外);

如果相同的call stack出现在同一个线程上(tid)上, 我们很很大理由相信, 这段代码可能存在较多的循环或者死循环;

如果某call stack经常出现, 并且里面带有lock,请检查一下这个lock的产生的原因, 可能是全局lock造成了性能问题;

在一个不大压力的群集里(w<2), 我们是很少拿到带有业务代码的stack的, 并且一般在一个完整stack中, 最多只有1-2业务代码的stack,

如果经常出现, 一定要检查代码, 是否出现性能问题。

如果你怀疑有dead lock问题, 那么请把所有的lock id找出来,看看是不是出现重复的lock id。

 

http://blog.csdn.net/axman/article/details/7104819

 

相关文章
|
6月前
|
云安全 监控 负载均衡
游戏运行只会占用到服务器里面一个核心使用,其他核心不工作,是什么问题
游戏运行只占用服务器的一个核心,而其他核心不工作,可能有多种原因。以下分享一些常见的原因和处理的方案
|
6月前
|
监控 安全
线程死循环是多线程应用程序开发过程中一个难以忽视的问题,它源于线程在执行过程中因逻辑错误或不可预见的竞争状态而陷入永久运行的状态,严重影响系统的稳定性和资源利用率。那么,如何精准定位并妥善处理线程死循环现象,并在编码阶段就规避潜在风险呢?谈谈你的看法~
避免线程死循环的关键策略包括使用同步机制(如锁和信号量)、减少共享可变状态、设置超时、利用监控工具、定期代码审查和测试、异常处理及设计简洁线程逻辑。通过这些方法,可降低竞态条件、死锁风险,提升程序稳定性和可靠性。
98 0
|
6月前
在程序运行过程中,线程的状态是什么?进来看看就通透了
在程序运行过程中,线程的状态是什么?进来看看就通透了
49 0
|
缓存 负载均衡 Linux
【车载性能优化】将线程&进程运行在期望的CPU核心上
如果我们能够将程序的**进程**或**线程**运行在指定的CPU核心上,原则上就可以实现动态调节应用的执行效率。实现这种需求要用到一个Linux的函数—`sched_setaffinity`。
658 0
【车载性能优化】将线程&进程运行在期望的CPU核心上
|
缓存 监控 算法
案例15-创建大量对象导致cpu飙升
创建大量对象导致cpu飙升
209 0
|
Android开发 开发者
Android系统是如何计算应用启动耗时的?能否更精准定位性能瓶颈呢?
Android系统是如何计算应用启动耗时的?能否更精准定位性能瓶颈呢?
Android系统是如何计算应用启动耗时的?能否更精准定位性能瓶颈呢?
|
监控 Java 应用服务中间件
系统gc后线程数增加原因分析过程
问题&现象1、由于系统过一段时间(四五天)commited old区会增大,我们应用中增加每天凌晨一次主动fullgc的任务,但是观察下来发现每天经过system.gc后线程数会增加几个,一直增加到接近300不会增加,并且增加的线程为守护线程。监控图如下:2、某些机器偶然出现线程数陡增情况:分析第一反应为fullgc时会新建gc线程去处理,但是通过jstack指令监控两天的线程变化发现,g
|
Linux 测试技术 Shell
系统诊断小技巧(11):如何解决“问题复现了,但是捕捉数据进程因为CPU打满没有运行”?
引子 曾经搞过一个尴尬的案例。排查过一个CPU打满的问题。因为问题是在凌晨出现,而且非常随机。所以我们就准备了一个脚本,用来捕获占用CPU高的线程。但尴尬的是,问题复现了,我们的脚本偏偏在问题复现的时候,没有记录。
2039 0
|
监控 Java 测试技术
系统运行缓慢,CPU 100%,以及 Full GC 次数过多问题的排查思路
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。
1158 0

相关实验场景

更多
下一篇
无影云桌面