如何减少 Wildfly 部署所需的时间?

Posted

技术标签:

【中文标题】如何减少 Wildfly 部署所需的时间?【英文标题】:How to reduce the time taken for Wildfly to deploy? 【发布时间】:2018-05-04 12:27:24 【问题描述】:

在我的 Web 应用程序部署期间,延迟/暂停超过 2 分钟,导致部署失败(因为超时)

下面的行是打印的最后一行,之后打印下一个日志需要相当长的时间。

WFLYSRV0049: WildFly FUll 9.0.2.Final (WildFly Core 1.0.2.Final) starting

我知道通过增加超时可以避免超时异常,但是有没有办法可以减少应用程序部署所需的时间?

另外,造成这种延迟的原因是什么?

【问题讨论】:

提高日志级别,希望您能看到更多信息。如果您使用的是 Windows,请尝试禁用您的防病毒软件,看看是否有任何不同 您的部署规模是多少? 大小约为 300 MB 应用安装文件夹的杀毒中添加了一个异常 【参考方案1】:

首先,我建议将超时更改为更高的值。如果我们谈论即使在 SSD 磁盘上也只有几百 MB 的应用程序,2 分钟也不算多(这也很大程度上取决于计算机硬件)。您可以在以下代码中的服务器元素中添加standalone.xml(或domain.xml):

<system-properties>
    <property name="jboss.as.management.blocking.timeout" value="900"/>
</system-properties>

它将超时设置为 15 分钟。

日志中的巨大漏洞也表明日志记录无法正常工作(除非您设置了 ERROR 级别或类似的东西)。

要加快部署时间,您可以执行以下操作:

在 C 分区上安装 wildfly。在磁盘上,您可以获得很大的性能改进(磁盘的最快扇区首先分配给分区)。在我的计算机上,C 分区上的 IO 操作比上一个分区快 2 倍左右。我不知道您是否在 SSD 磁盘上获得了性能改进。我建议为 IO 操作运行基准测试。

将安装了 Wildfly 的文件夹添加到防病毒软件的排除项中。

禁用standalone.xml(或domain.xml)中不需要的子系统。 Wildfly 默认启用了很多子系统。你可能并不需要它们。您可以在以下位置阅读有关子系统的信息:https://docs.jboss.org/author/display/WFLY9/Subsystem+configuration

减小安装大小。您可以通过减少第三方库的数量轻松实现这一目标。如果您部署您的应用程序,然后转到standalone\tmp\vfs\deployment,您可以看到库的每个实例都已部署。如果你在应用中有 5 个 guava 18.0 库(因为你有很多独立的模块),它们将被部署 5 次。您可以将一些第三方库放入 modules\system\layers\base 并使用 jboss-deployment-structure 或全局模块将此库附加到战争和耳朵。如果你将wars打包到ear中,你也可以把wars中的一些库放到ear中。此外,wildfly 在模块中提供了一些标准库。我建议查看此库。可能其中一些已被您使用,您可以从 wildfly 获得它们。

获得更好的硬件,在 SSD 磁盘上 Wildfly 的部署速度会快几倍。还要注意 RAM 使用情况,如果您没有足够的 RAM,操作系统将在 RAM 和磁盘之间交换内存,从而显着降低部署速度。

【讨论】:

我提到有超过 2 分钟的延迟,其中有时部署的总时间超过 5 分钟(这是默认超时值),因此部署失败。我想确保部署至少在一两分钟内完成。

以上是关于如何减少 Wildfly 部署所需的时间?的主要内容,如果未能解决你的问题,请参考以下文章

Websocket 客户端的 Wildfly URI

Wildfly 18 - WFLYCTL0362:资源“/subsystem=undertow/server=default-server/http-listener=http”所需的功能不可用

如何减少提取文件所需的时间?

如何减少显示输出所需的加载时间?

在 Jboss 8 Wildfly 中设置默认地址

我从Wildfly中删除了ExampleDS。现在我无法部署我的应用程序,因为我遇到了这样的错误。有什么提示吗?