性能问题,如何定位一个应用响应慢等性能问题

1.jstace看有没有锁
2.看awr报告,找到最耗性能的sql。然后加索引,如果索引用的不太对,用hnit加以控制

遇到的性能解决实例:

lsof -p pid  发现几千个句柄无法回收。业务无法获取信息的句柄,系统出现too many open file错误,导致业务无法接入。

jvm的堆内存结构:
年轻代,老年代,持久代

年轻代会很快GC一次,老年代会很久GC一次。

造成的原因:
对象经过0次年轻代的GC就会进入老年代,所以对象一直在老年代,很久不会GC,打开的文件越来越多,才会出现句柄泄露。
tomcat7 catalina.sh中 JVM配置 MaxTenuringThreshold=0;

另:httpclent for循环调用会造成这样的情况。
解决:在finally中加releaseConnection
或者:method.setRequestHeader("connection","close") 表示用短连接。

**句柄** 是存放在栈内存中,对象是存放在堆内存中(分老年代和年轻代),(String 放在常量池中,或者说栈内存)
User u = new User();
u就是句柄,如果循环的创建很多User,有很多指向User的句柄,就可能造成句柄泄露。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值