Java应用执行非常慢,如何分析
1个回答
展开全部
问题现象:
1. 应用一周左右未重启会出现执行批量特别慢的情况,平时600w数据跑完半小时左右,出问题的应用可能要2个小时甚至更长,重启可以恢复正常,不重启第二天可能还会慢,也有可能会恢复。
1. 出问题的机器,应用,交易不固定,同一台机器某个或某几个应用出问题其他应用正常执行不受任何影响,出问题的应用所有交易执行时间拉长,所有的操作都会变慢,但是能正常跑完。
问题分析:
1. 之前怀疑是网络,I/O问题,现在基本可以排除,因为观察网络和磁盘io占用很小
1. 怀疑是由于内存占用太高导致的,然后蠢祥机器内存剩余80G左右,应用内存占用均正常。机器CPU占用70%以下
1. 分析heapdump和gc,jstack日志没有发现明显的异常,应用也没有任何报错,无解。
1. 对出问题的应用使用jmap -histo:live [pid]命令,应用袭档态会恢复正常,目前测试了出问题的几个应用,都有效果,但是目前还不清楚原因。
1. 应用FullGc非常少,一天能有一次就不错了。younggc也还好,高频的时候也就30s左右一次,每次29ms这样拍源。
1. 怀疑内存泄露,但是从dump来看并没有什么异常,出问题的应用堆栈基本都在执行数据库操作,就是慢,而且出问题的应用CPU占用比较高达到90%以上。
1. 应用一周左右未重启会出现执行批量特别慢的情况,平时600w数据跑完半小时左右,出问题的应用可能要2个小时甚至更长,重启可以恢复正常,不重启第二天可能还会慢,也有可能会恢复。
1. 出问题的机器,应用,交易不固定,同一台机器某个或某几个应用出问题其他应用正常执行不受任何影响,出问题的应用所有交易执行时间拉长,所有的操作都会变慢,但是能正常跑完。
问题分析:
1. 之前怀疑是网络,I/O问题,现在基本可以排除,因为观察网络和磁盘io占用很小
1. 怀疑是由于内存占用太高导致的,然后蠢祥机器内存剩余80G左右,应用内存占用均正常。机器CPU占用70%以下
1. 分析heapdump和gc,jstack日志没有发现明显的异常,应用也没有任何报错,无解。
1. 对出问题的应用使用jmap -histo:live [pid]命令,应用袭档态会恢复正常,目前测试了出问题的几个应用,都有效果,但是目前还不清楚原因。
1. 应用FullGc非常少,一天能有一次就不错了。younggc也还好,高频的时候也就30s左右一次,每次29ms这样拍源。
1. 怀疑内存泄露,但是从dump来看并没有什么异常,出问题的应用堆栈基本都在执行数据库操作,就是慢,而且出问题的应用CPU占用比较高达到90%以上。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询