系统上完线后不久,就宕机了,很是郁闷,对系统宕机这块没有相关解决方案,就将此问题修复的方案记录,一边自己以后查阅,也希望可以帮助遇到此问题的友友。
服务器内存过小(以windows64为例)
一般首先考虑是tomcat内存过小,查看错误日志文件,是否是内存过小问题,内存过小,增加tomcat的内存,
如果部署项目是通过点击tomcat/bin目录下的start.bat,我们需要这样修改:
1, 打开tomcat的bin目录.
2, 找到catalina.bat文件.
3, 找到set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% 代码,在此行代码上一行加入内存配置信息,如:
JAVA_OPTS=”-Xms512m -Xmx1024m” –内存最大为1024,最小为512
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=64M -XX:MaxPermSize=256m"—类空间大小范围为64m到256m之间
如果部署项目是通过把tomcat注册成服务启动的,我们需要修改注册表,因为服务启动时是加载注册表中的配置信息。
注册表:(64位)
找到以下项:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ApacheSoftware Foundation\Procrun 2.0\Tomcat6\Parameters\Java]
设置:JvmMs—jvm初始化分配的内存,建议最大内存和最小内存设置一致减少GC
JvmMx—jvm所能使用的最大内存
如果是32位的操作系统,内存最大只能设置1.5G到2G之间,超过这个范围,tomcat无法启动。
如果是64位的操作系统,内存最大可以设置2G到3G之间,同样超过这个范围,tomcat也无法启动。
所以最好使用64为操作系统。
如果经过以上调整,系统有所改善,但是后期业务量增大,系统又宕机的话,并且确定是内存不足,我们就需要考虑tomcat集群。
系统程序bug
如果内存增加了几倍,效果还是和内存没有调整之前一样,那我们就要考虑是否是程序在执行的时候导致的错误,一般我们都可以查看日志来定位具体执行哪个程序,系统宕机,但是有的程序报错不会记录日志,所以我们在开发的时候应该在关键的方法,手动记录日志,比如记录方法名称,参数信息等,方便以后我们定位错误。我们找到程序终止时最后执行的方法,对代码进行仔细分析,肯定会发现bug的。