性能问题——CPU高了怎么办?
2012-05-17 10:54
176 查看
本文主要介绍性能问题中CPU高的定位方法和定位工具的使用
一 . CPU高的定位方法
通常情况下,当我们发现系统进程的CPU使用过高时,就需要分析系统是否正常,内部是否有死循环。当外界压力停止一段时间之后,如果系统的CPU使用率降到100以下,基本可以确认系统没有死循环;如果系统的CPU使用率在系统停止之后还达到100或者更高,而且一直持续下去,基本就可以确定系统内部存在死循环。
定位方法:
先需要找到占用CPU高的线程,然后对线程堆栈进行分析,结合业务代码分析原因。
1) 通过top –Hp pid 可以按照CPU使用率由高到低打印线程ID(十进制);
1) 将线程堆栈打印(按照之前的方法)出来,然后将线程PID换算成16进制的ID找出线程的堆栈信息,然后结合代码进行分析。
注:情况下,用kill -3 PID即可打印出线程堆栈信息;如果由于某种异常场景无法打印出线程堆栈信息,可以用jstack PID 命令打印线程堆栈信息
二性能问题CPU高的定位工具使用方法(Jprobe)
关于Jprobe工具的安装,配置,及使用方法可参见《经验:java应用性能分析-使用Jprobe定位java进程的性能问题.doc》
一 . CPU高的定位方法
通常情况下,当我们发现系统进程的CPU使用过高时,就需要分析系统是否正常,内部是否有死循环。当外界压力停止一段时间之后,如果系统的CPU使用率降到100以下,基本可以确认系统没有死循环;如果系统的CPU使用率在系统停止之后还达到100或者更高,而且一直持续下去,基本就可以确定系统内部存在死循环。
定位方法:
先需要找到占用CPU高的线程,然后对线程堆栈进行分析,结合业务代码分析原因。
1) 通过top –Hp pid 可以按照CPU使用率由高到低打印线程ID(十进制);
1) 将线程堆栈打印(按照之前的方法)出来,然后将线程PID换算成16进制的ID找出线程的堆栈信息,然后结合代码进行分析。
注:情况下,用kill -3 PID即可打印出线程堆栈信息;如果由于某种异常场景无法打印出线程堆栈信息,可以用jstack PID 命令打印线程堆栈信息
二性能问题CPU高的定位工具使用方法(Jprobe)
关于Jprobe工具的安装,配置,及使用方法可参见《经验:java应用性能分析-使用Jprobe定位java进程的性能问题.doc》
相关文章推荐
- 进程、检查-oracle 性能调优 解决CPU问题-by小雨
- 记一次线上事故,redis 的keys问题,cpu引起的性能问题
- WINDOWS 2008的trustedinstallerexe占用过多CPU导致服务器性能下降的问题处理
- MySQL Insert语句单个批次数量过多导致的CPU性能问题分析
- linux性能问题(CPU,内存,磁盘I/O,网络)
- 遇到 Form 性能问题怎么办 performance issue
- 转:怎么选择正确的CPU时钟进行性能测量?
- linux性能问题(CPU,内存,磁盘I/O,网络)
- 3个增加CPU负担影响IIS/asp.net 性能的问题摘要
- linux性能问题(CPU,内存,磁盘I/O,网络)
- linux性能问题(CPU,内存,磁盘I/O,网络)
- xen虚拟机cpu负载过高性能问题
- 数据库性能优化分析案例---解决SQL语句过度消耗CPU问题
- iOS使用Instruments分析和优化CPU性能问题
- resmgr:cpu quantum导致的性能问题
- linux性能问题(CPU,内存,磁盘I/O,网络)
- 使用火焰图分析CPU性能回退问题
- [Linux 性能调优] 网卡中断与CPU的绑定问题
- resmgr:cpu quantum导致的性能问题
- linux性能问题(CPU,内存,磁盘I/O,网络)