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