如何排查项目内存溢出的问题出在哪呢?
最近在运维一个项目中,用户提出在使用图片上传或提交的时候总会出现页面无响应;为了排查问题,进入后台打开tomcat的startup.bat运行项目;发现项目会自动报内存溢出,接下来,一阵分析后,得出三个结论:
1.服务器内存不够?(显然不可能,打开资源管理器,内存占用率不到一半)
2.代码不规范,引起的内存溢出?(排除,项目已经运行了一年时间)
3.tomcat内存超出?(可能存在此问题,继续排查)
带着第三个问题,我打开了webapps,发现开发在一个tomcat下放了四个项目同时运行o(╥﹏╥)o,确定是第三个问题;
首先tomcat之前是以服务启动的,打开注册表(cmd输入regedit),发现tomcat内存是-XX:MaxPermSize=4096;最小内存是-XX:PermSize=2048;此时最对这两个值做了变更;
又因为我是以start.bat启动的,所以需要在tomcat/bin/catalina.bat中重新加入tomcat内存设置
注:加入位置为@echo off下面
set CATALINA_OPTS=%CATALINA_OPTS% -server -XX:PermSize=256M -XX:MaxNewSize=4096M -XX:MaxPermSize=5120M;
总结:tomcat以服务启动,更改内存大小需要在注册表中更改如下图;
如果是以bat文件启动,需要更改catalina.bat中的文件内存。
怎么样?看明白了吗?如果哪写的不明白,请你提出意见,下次改善