我最近在Amazon EC2上部署了一个Grails应用程序。我使用了MySQL和Tomcat(等等)。
由于这只是出于测试目的,我希望遇到“糟糕”的情况,因此我在应用程序仍在运行时从Web应用程序中删除了我的应用程序文件夹等等。
当我最终删除了我的应用程序的所有痕迹时,我尝试通过在web-apps文件夹中删除一个新的war文件来部署它的新版本。
由于8080已绑定异常,应用程序无法启动,在阅读了一些博客后,我遇到了对此问题的解释:守护程序线程......
现在我使用了:
pkill java
这就是诀窍,我的问题是你们是如何处理这种情况的?
答案 0 :(得分:0)
如果您正在尝试检测Tomcat何时死亡,请确保它已真正停止(即不再运行),然后重新启动该过程,您最好的选择是某种心跳过程。您可以编写一个shell脚本,以便在与Tomcat相同的框中运行,该Tomcat会定期向特定URL发出Web请求。如果它获得了预期值,那么一切都很好,但如果没有,那么它会发出kill命令,等待并重新启动 - 或者发送电子邮件,采取其他行动等等。你想确保这个过程不是这是Tomcat发布的守护程序线程,原因如上所述(在某些情况下它们会继续运行)。相反,我将其设置为每分钟作为一个cron作业运行的脚本。
当然,如果您在AWS EC2上运行,最好有一个小实例为您进行此监控。当它检测到Tomcat服务器已经死亡时,它将终止整个EC2实例并启动一个新的实例以替换它。 AWS具有可在脚本中使用的命令行工具,以实现此类管理。这可能是一个更好的解决方案,因为那时您将从一个干净的平板开始,因此当您使用服务器的初始映像附加EBS卷或机器映像时,将恢复任何修改(如文件已擦除)。上面的方法(在同一台服务器上运行脚本)不能轻易地检测和修复丢失的文件或其他一些让事情发生变化的变化。