测试方法:
1.狂点抽取大量数据的接口
结果:
jvm里面的现成崩溃。导致tomcat错误。
思路:
最近发现tomcat老是自动关闭,开始也发现了,不过没放在心上,直到今天,请求一提交到服务器,tomcat就死了
错误排查
tomcat自动关闭的原因很多,不一定是内存溢出,网上查到原因:
1.并发用户数目过大,也会导致tomcat自动停止服务
2.系统本身的网络负载平衡没有做好,导致tomcat自动停止服务
3.程序迭代不合理也是一个原因
4.数据库连接未关闭,导致资源损耗过重,会引起服务停止
5.程序严重错误,也会引起tomcat停止服务
没错,以上情况我都不是
接下来就是看日志了,报错看日志是常识了
1.首先看tomcat的bin目录下的logs文件夹的日志,日期排序,看当天的就行了,如果有错误信息,先解决了再说
2.看tomcat的bin目录下面,有没有hs_err_pidxxxx.log 之类的文件,如果没有,你可以不看下面的内容了,如果有,恭喜你,内存溢出了
解决方案
1.既然是内存溢出,就先看看自己服务器的配置,是不是服务器内存不够用了,尽量把没用的进程停止了
2.去tomcat的bin下面有个catalina.bat的批处理文件,用notepad++打开文件,
全文搜索
%CATALINA_OPTS%
替换成
-Xmx128m -Xms64m -Xmn32m -Xss16m
一共有四处需要替换的地方
然后启动tomcat
3.可能以上情况不行,接下来就是检查你的运行环境了,运行环境也是有影响的
cmd命令窗口输入:java -version
看看版本显示是否正常
如果不是图片中的提示,版本号无所谓,就需要看看你jdk的环境变量对不对了
简单教程环境变量配置
a.
b.
如果环境变量没问题,继续
4.以上情况都不行的话,建议更换tomcat版本
推荐tomcat7090以上
tomcat官网下载
如图下载需要的版本即可
安装tomcat,打包部署,启动tomcat
5.如果以上还是不行
a.可以在本地把项目打包出来
运行环境直接copy出来即可,路径下如图
wtpwebapps文件夹里面就是你运行的项目,不要剪切,不然你的本地代码也没了(哥就吃过这个亏,当天的代码全没了,但是我每天都会备份数据)
b.然后自己放到自己刚才下载的tomcat里面(这只是我的排错方式,当本地环境和服务器环境一样,看本地是否还报错)
如果发现本地不报错,那就是服务器的问题了
可能是你服务器配置雀实太低了,让老板加钱升级吧
推荐环境:jdk1.8,tomcat7090
ps:高版本的tomcat用jdk1.8
http://aodeng.cc:8886/archives/tomca
解决方法:
1.更换jdk版本 不要用32位的(最高支持3.7g) 用64位的。
2.初始2G,最大6G,方法区256最大,初始128。
8g内存 推荐配置参数:
windows::::::set JAVA_OPTS=-server -Xms2048m -Xmx6000m -XX:MaxNewSize=512m -XX:MaxPermSize=512m
linux 注意一定要带引号::::::::::set JAVA_OPTS="-Xms2048m -Xmx6000m -Xss1024K -XX:MaxNewSize=512m -XX:MaxPermSize=512m"