【发布时间】:2019-03-03 03:40:06
【问题描述】:
问题:
我们在 Tomcat 中有很多应用程序,每个应用程序都需要很长时间才能启动。
在此期间,如果您向 Tomcat 端口发出 HTTP 请求,它将等待所有应用程序完全启动。
由于我们有一个仅检查 Tomcat TCP 连接的负载均衡器,因此丢弃该 Tomcat 实例是不够聪明的。
想要的解决方案:
我想知道如何启动 Tomcat,以便它仅在所有应用程序完全部署后才开始侦听 HTTP 请求。这样,负载均衡器会注意到无法建立 TCP 连接,并且在此期间会丢弃该 Tomcat。
【问题讨论】:
-
tomcats热部署怎么样?请参阅tomcat.apache.org/tomcat-8.0-doc/deployer-howto.html“在正在运行的 Tomcat 服务器上部署”部分和以下部分。这将为您节省其他应用程序的时间。
-
也可以在这里查看一些提示stackoverflow.com/a/25878204/3021395
-
但是在这种情况下,如果有一个对一个应用程序的请求尚不可用,你会得到一个 404(因为我的负载均衡器只检查 TCP 连接)。
-
那么在将您的应用程序分发到不同的 tomcat 以使它们彼此隔离时,可能会在前面使用带有 mod-proxy 的 apache http 可能会有所帮助。