我有一个运行Tomcat7服务器的Digital ocean实例。
有时它因为我不知道的原因而自行关闭。也就是说,我启动它,使用它,然后在几天内不做任何事情。然后我尝试连接到它,但它不可用,我必须重新启动它(sudo service tomcat7 restart
)。
我希望它能全天候工作(可用),除非我手动关闭它。我没有在日志文件中看到任何堆栈错误痕迹。
服务器在一段时间不活动后关闭可能是什么原因?
答案 0 :(得分:2)
我询问了Digital Ocean的技术支持,发现我的Droplet中没有交换文件。这可能是问题的原因(当没有物理内存时,进程被杀死,因为没有交换文件)。
所以我使用这个tutorial创建了它。我会看看这是否能解决我的问题。
答案 1 :(得分:1)
我也有这个问题,但添加交换空间并没有帮助。就我而言,tomcat被OOM杀手拦住了。在系统日志中检查这一点(在Ubuntu上:/var/log/syslog
):“发送sigkill到...”
有关OOM杀手问题的帮助,您可以尝试提高tomcat进程的优先级:
echo -15 > /proc/PROC_NUMBER/oom_adj
(其中PROC_NUMBER是您的特定流程)。有关调整OOM杀手的更多信息,请参阅http://www.oracle.com/technetwork/articles/servers-storage-dev/oom-killer-1911807.html
您可能希望调整tomcat的起始和最大堆大小,最大永久生成以及可能的其他参数。您可以通过CATALINA_OPTS环境变量执行此操作,例如:
export CATALINA_OPTS="-Xms256m -Xmx384m -XX:MaxPermSize=256M"
这些都对我有所帮助。我还有一个cronjob检查tomcat并在必要时再次启动它。
答案 2 :(得分:0)
检查/ opt / tomcat / logs / catalina.out 文件大小。如果catalina.out的大小变为2GB,则tomcat崩溃并且无法启动而没有任何错误消息。您需要为catalina.out设置日志轮换:
sudo apt-get install logrotate
然后创建
/etc/logrotate.d/的文件名强>
将以下内容复制到上述文件(“文件名”)
中/var/log/tomcat/catalina.out {copytruncate daily rotate 7
压缩missok size 5M}
根据需要更改cron参数。