在 WebSphere 8.5(64 位 Linux)上部署时如何增加 ws_ant.sh 的堆大小

在 WebSphere 8.5(64 位 Linux)上部署时如何增加 ws_ant.sh 的堆大小

TL;DR——如何在运行时为任务提供ws_ant.sh更多<wsInstallApp>堆?

我正在尝试将一个相对较大(~160 MB)的 EAR 文件部署到在 64 位 Linux 平台上运行的 WebSphere 8.5。

这是我的任务build.xml

<wsInstallApp
    ear="/my/ear/file/location/New.EAR"
    properties="jvm.properties"
    options="-appname myNewEarApp -update -deployws"
    host="localhost"
    conntype="SOAP"
    user="the_username"
    password="not_telling_you"
    failonerror="true" />

使用与 WAS 一起打包执行它将ws_ant.sh导致OutOfMemoryError堆转储。

因此,我需要在运行时增加任务(或 ws_ant 本身?)可用的堆,但我不知道该在哪里做。我试过修改 wsadmin.sh,虽然如果我直接使用 Jython 脚本运行我的部署会产生影响wsadmin.sh,但它似乎对<wsInstallApp>Ant 脚本内部的执行没有任何影响。

根据wsInstallApp 的 IBM 文档

特性属性是可选的,它包含一个 Java 属性文件,其中包含要在 JVM 系统属性中设置的属性

在我的jvm.properties文件中,我尝试过:

[user@localhost]$ cat jvm.properties
-Xms4096m
-Xmx4096m

这没有效果。ws_ant.sh使用-v详细标志执行显示,在某处,-Xmx 值设置为-Xmx256m。我尝试了其他几种愚蠢的组合和格式,但似乎没有任何效果。

我还尝试在ws_ant.sh调用中添加参数:

[user@localhost]$ ws_ant.sh -Xms4096m -Xmx4096m -v -f build.xml was.deploy

...但这似乎也没什么作用。

我究竟做错了什么? 我承认,如果有必要,我可以通过重新编写部署wsadmin.sh并使用 Jython 脚本来满足我的要求,但我正在尝试利用来自不同 EAR 应用程序的一些广泛的 Ant 脚本。

备择方案?我也认识到我可以使用<wsadmin>Ant 任务从 Ant 内部调用一些 Jython 脚本——我还没有尝试过——但是,我们已经有一些广泛的脚本了。 相对于另一种方式,这种方式的相对优势和劣势分别是什么?(即通过或相对于[及其“ws_____”兄弟]执行wsadmin.sh/Jython 脚本)。<[ssh]exec><wsadmin><wsInstallApp>

答案1

尝试属性 jvmMaxMemory

<wsInstallApp
    ear="/my/ear/file/location/New.EAR"
    jvmMaxMemory="1024M"
    options="-appname myNewEarApp -update -deployws"
    host="localhost"
    conntype="SOAP"
    user="the_username"
    password="not_telling_you"
    failonerror="true" />

答案2

对于 ws_ant.sh,你必须使用JVM_EXTRA_CMD_ARGS环境变量。

export JVM_EXTRA_CMD_ARGS="-Xms1G -Xmx2G"
sh $WEBSPHERE_HOME/bin/ws_ant.sh -f was-build.xml

为了证明这一点,交换最小和最大尺寸“-Xms2G -Xmx1G”,您将收到错误:

VMJ9GC019E -Xms too large for -Xmx
JVMJ9VM015W Initialization error for library j9gc26(2): Failed to initialize
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

答案3

我们正在使用 Maven 进行部署,我可以确认,将 jvmMaxMemory 添加到 wsInstallApp 有帮助。我不得不分叉原始插件并添加对它的支持。

相关内容