一个项目中内存问题的具体分析

最初的问题是使用jstat -gcutil发现full gc的发生次数达到了每分钟130次,改变heap size的大小从1024M到4096M. FULL GC的次数下降到了每5分钟一次。可以接受。

在执行5个小时的混合场景时,使用jstat -gcutil 统计,FULL GC的发生次数越来越频繁。

同时用jconsole监控的图如下所示:

可以从图中看出,堆内存的使用不断增长,最终会超出4G的范围,造成连接失败。

经过查看日志,发现是我的脚本中少做了关联,造成了ID找不到。过错啊,写完脚本居然都没有做关联就开始跑场景了。

做完关联后继续跑场景。
结果跑完一段时间的场景后,server变成了warning的状态。不能正常提供服务了。

开发做了修改。结果响应时间的图就变成了这样

 后来经过确认,发现脚本不是记过录制的,而是直接通过写url来访问的,后来把报表改成了录制的方式,再重新跑,响应时间就比较平稳了。但是内存还是会一直上涨。

因为之前有测试的先例。把之前的脚本拿过来比对了一下。

改为从平台登录的方式,内存在涨到顶点之后有所下降。Jconsole的使用图为

 

而数据库的进程图为

在运行过程中,服务器挂掉

原文地址:https://www.cnblogs.com/villadom/p/3978730.html