在两台不同的服务器上同时重启tomcat

在两台不同的服务器上同时重启tomcat

我们在两台服务器上运行 Apache solr。不幸的是,索引(猜测)服务器负载过重,导致宕机。我们每次都手动重启 tomcat。

当我用谷歌搜索时,我发现了两种自动重启 tomcat 的方法虚拟机选项

-XX:OnOutOfMemoryError="<cmd args>;
<cmd args>" 

所以我相信下面的命令会在每次内存不足时重新启动 tomcat

-XX:OnOutOfMemoryError="/etc/init.d/tomcat restart"

但是我如何将此过程同步到另一台服务器。两台服务器都处于分片状态。

谁可以帮我这个事?

答案1

您不需要直接从 OnOutOfMemoryError 触发器运行 tomcat restart,而是可以运行一个简单的脚本,该脚本将在本地服务器上执行此操作,然后通过 ssh 连接到远程服务器执行相同操作。

答案2

我会为一些监控检查添加一个触发器,该触发器只运行一个在两个系统上重新启动 tomcat 的脚本。也许在重新启动之前和之后进行一些健全性检查。

例如,您可以使用 Fabric 编写这些脚本(http://www.fabfile.org/)或 Rex(http://www.rexify.org/)。

另外,我想弄清楚为什么 tomcat 会冻结。如果它内存不足,也许您可​​以为 jvm 提供更多内存?

如果需要监视 jvm 的内部内存使用情况,可以使用http://www.jolokia.org/将其集成到nagios或其他监控工具中。

相关内容