Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 启动Tomcat';在部署所有应用程序后,安装HTTP/HTTPS连接器_Java_Tomcat - Fatal编程技术网

Java 启动Tomcat';在部署所有应用程序后,安装HTTP/HTTPS连接器

Java 启动Tomcat';在部署所有应用程序后,安装HTTP/HTTPS连接器,java,tomcat,Java,Tomcat,问题: 我们在Tomcat中有许多应用程序,每个应用程序都需要很多时间才能启动 在此期间,如果您向Tomcat端口发出HTTP请求,它将等待所有应用程序完全启动 因为我们有一个只检查Tomcat TCP连接的负载平衡器,所以它不够聪明,不能丢弃那个Tomcat实例 需要的解决方案: 我想知道如何启动Tomcat,使其仅在所有应用程序完全部署后才开始侦听HTTP请求。通过这种方式,负载平衡器将注意到不可能建立TCP连接,并将在这段时间内丢弃该Tomcat。Tomcat wiki对此有一个“操作方法

问题:

我们在Tomcat中有许多应用程序,每个应用程序都需要很多时间才能启动

在此期间,如果您向Tomcat端口发出HTTP请求,它将等待所有应用程序完全启动

因为我们有一个只检查Tomcat TCP连接的负载平衡器,所以它不够聪明,不能丢弃那个Tomcat实例

需要的解决方案:

我想知道如何启动Tomcat,使其仅在所有应用程序完全部署后才开始侦听HTTP请求。通过这种方式,负载平衡器将注意到不可能建立TCP连接,并将在这段时间内丢弃该Tomcat。

Tomcat wiki对此有一个“操作方法”

简言之:

  • Web应用程序配置
  • 移除不必要的罐子
  • 从扫描中排除JAR
  • 熵源配置
  • 启用与startStopThreads并行启动Web应用程序
  • 调整内存参数
  • 尽可能地修剪配置文件。XML解析并不便宜。要解析的内容越少,事情就会进行得越快
  • 删除您不需要的任何web应用程序。(因此,请删除与tomcat一起安装的所有web应用程序)
  • 确保您的代码没有执行缓慢的操作。(使用探查器)

tomcats热部署怎么样?请参阅“在运行中的Tomcat服务器上部署”一节和以下各节。这将为您节省其他应用程序的时间。另请参阅此处了解一些提示,但在本例中,如果有对某个应用程序的请求尚未可用,您将获得404(因为我的负载平衡器仅检查TCP连接)。那么,在将应用程序分发到不同的Tomcat上时,使用前面带有mod proxy的apache http可能会有所帮助,使它们彼此隔离。在我的例子中,主要原因是应用程序启动时,它会从数据库加载大量数据(在4分钟内)。我们可以惰性地完成这项工作,但如果可能的话,我更愿意使用Tomcat的连接器,这样我们就不必花费时间对其进行惰性编码。为初始数据库加载额外的线程如何?您还可以尝试使用bindOnInit选项(请参阅)是否会改变某些内容。