gpt4 book ai didi

java - 优化tomcat启动时间

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:48 28 4
gpt4 key购买 nike

我的应用程序非常大,例如在 web-inf/lib 中包含 310 个 jar,总共 100Mb。启动服务器,下面这一步需要13s:

Sep 16, 2014 1:05:33 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.47\webapps\ROOT

应用程序依赖于网络片段和注释才能正常启动。

我尝试了以下方法来跳过 13 秒的扫描时间:

  • 使用属性 logEffectiveWebXml="true"修改 conf/context.xml

  • catalina run 2> web-complete.log

  • web-complete.log中提取web.xml片段,保存在webapps\ROOT\web-inf\web.xml下

如果我启动我的应用程序,我仍然看到 13 秒的扫描时间。 metadata-complete 在上面的代码片段中已经设置为“true”。

将以下语句添加到 web.xml 后,完全跳过了 13s,但这次我的应用程序无法启动:

<absolute-ordering />

1) 在我的案例中,使 tomcat 快速启动的正确方法是什么?

2) 你能解释一下为什么 metadata-complete 对 13 岁没有帮助吗?

3) 虽然我的 web.xml 已经完成,但为什么不允许应用程序启动?

谢谢,

最佳答案

您可能假设 Tomcat 在默认情况下在部署您的 web 应用程序时做一些低效的事情,并且如果您做出正确的更改,您可以绕过它并使您的 web 应用程序启动得更快。这些都不是安全的假设。 Tomcat 往往非常高效,甚至可以处理大型 Web 应用程序。

在我看来,您的 Web 应用程序足够大,JDK 无法在不到 13 秒的时间内加载大量类并实例化大量对象。时间可能主要花在实例化和初始化 servlet 及其所需的一切上,如果您的 webapp 在服务请求之前有许多大型子系统要初始化,那么这是一项非常大量的工作。完成所有这些肯定会花费数十秒,并且在此期间没有太多时间花在解析配置文件上,甚至打开 JAR 文件来查找和解析一些配置文件也是如此。

为什么您的 webapp 无法以静态元数据完整部署描述符开始,我不知道,部分原因是您没有说明失败时失败的具体方式。但是,通过将 metadata-complete 设置为 true,您可能绕过了 Web 应用程序所依赖的 Web 应用程序启动的必要部分。

潜在的启动优化

您可以为您的大型 web 应用程序专门配置的东西可以节省 Tomcat 大量查看您的 web 应用程序文件的时间:跳过您知道 Tomcat 不应扫描某些内容的 JAR,例如 Servlet 3 片段和 TLD。查看您的 Tomcat 的 conf/catalina.properties 文件。这些可配置的系统属性都在其中:

# Additional JARs (over and above the default JARs listed above) to skip when
# scanning for Servlet 3.0 pluggability features. These features include web
# fragments, annotations, SCIs and classes that match @HandlesTypes. The list
# must be a comma separated list of JAR file names.
org.apache.catalina.startup.ContextConfig.jarsToSkip=

# Additional JARs (over and above the default JARs listed above) to skip when
# scanning for TLDs. The list must be a comma separated list of JAR file names.
org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar

添加所有在 Tomcat 搜索时应跳过的 JAR,我猜 Tomcat 启动 Web 应用程序的部分会更快完成。多快取决于网络应用程序。

关于java - 优化tomcat启动时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867282/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com