服务器环境:
腾讯云1核2G
操作系统:CentOS7
最近将项目部署到服务器后发现tomcat总是过一段时间会自动关掉。
1.查找原因
查看系统日志
cat /var/log/kern.log
发现如下内容:
Oct 23 06:43:35 localhost kernel: [30799661.517422] Out of memory: Kill process 3272 (java) score 198 or sacrifice child
Oct 23 06:43:35 localhost kernel: [30799661.520502] Killed process 3272 (java) total-vm:2543564kB, anon-rss:392108kB, file-rss:0kB
2. 原因分析
原因分析:linux会定时检查系统内存大小,发现剩余内存过小时会自动优先清理占用内存较大的进程,因此tomcat进程经常会被系统清除掉
3.解决方法
最简单的方法就是直接对云服务器内存扩容,一劳永逸
另一种方法就是设置一个定时任务执行tomcat监控脚本,每隔一段时间定时检查tomcat进程运行状态,若检查到进程不存在,则自动重启tomcat
4.方法2步骤
(1)创建脚本文件tomcatMonitor.sh
# 设置java环境变量,不设置的话运行startup.sh会报错
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk/bin
JAVA_HOME