Java的WEB应用性能问题定位方法总结:常见的性能指标分析 .

其实早就想对于性能问题的定位做一个总结。正好,最近做了一些Java的WEB应用性能问题的定位的专题工作,这里简单记录一些典型的性能问题定位方法。

(比如TPS偏低、吞吐量不足等:这些指标问题由下面说的多个指标造成,故不在单独讨论的范围之内)

 

应用CPU占用偏高,可能的因素包括:

逻辑复杂、算法效率低下

过度逻辑

检查方法:

JProfiler检查热点,等到系统稳定以后采集数据

截取堆栈,检查runnable线程,尤其对定位吞吐量不足造成的CPU占用偏高问题有帮助

 

堆栈占满,可能的因素包括:

堆配置过小

缓存配置过大

内存泄露

不及时的GC

检查方法:

jmap -heap 获取堆的详细信息

jmap -histo 获取不同对象的数量

多次jmap -heap 或 jhat 比较两个状态之间的对象变化情况

GC日志,使用工具辅助分析

 

DB瓶颈,可能的因素包括:

大表查询

不合理的索引

大表关联

待补充

检查方法:

分析SQL的执行计划,比如有的SQL可以走索引的结果走了全表扫描;哪些SQL cost偏高,需要优化

待补充。

 

磁盘I/O瓶颈,可能的因素包括:

检查方法:

vmstat

iostat

网络瓶颈,可能的因素包括:

检查方法:

查看Tomcat线程堆栈的时候会发现Tomcat线程池中的N多线程处于数据读取状态

ifconfig

 

其他问题:

LoadRunner瓶颈

开发模式配置检查

 

参数检查

jinfo

线程堆栈:

jstack

kill -3/CTRL+BREAK

堆分析:

jmap -heap

jmap -histo

内存dump.bin,使用HeapAnalyser分析

GC:

gc.log,使用GCViewer或者JMeter分析

jstat

CPU:

sar

top

网络:

netstat

ifconfig

I/O:

vmstat

iostat

JVM综合分析:

JConsole

JProfiler

JOptimizer/Optimizeit

JVMStat

JVisualVM

 

 

转自:http://blog.csdn.net/raychase/article/details/6560150

http://blog.csdn.net/raychase/article/details/6595405
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值