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

来源:互联网 发布:小企业财务会计软件 编辑:程序博客网 时间:2024/04/30 14:16

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的句柄,就可能造成句柄泄露。

0 0
原创粉丝点击