Como aumentar o tamanho do heap para o ws_ant.sh ao implementar no WebSphere 8.5 (Linux de 64 bits)

1

TL; DR - Como dou à tarefa ws_ant.sh e / ou <wsInstallApp> mais heap em tempo de execução?

Estou tentando implementar um arquivo EAR relativamente grande (~ 160 MB) no WebSphere 8.5 em execução em uma plataforma Linux de 64 bits.

Aqui está a tarefa que tenho no meu 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" />

A execução com o ws_ant.sh empacotado com os resultados do WAS em OutOfMemoryError e dumps de heap.

Então, eu preciso aumentar o heap disponível para a tarefa (ou o próprio ws_ant?) em tempo de execução, mas não consigo descobrir o local adequado para isso. Eu tentei modificar o wsadmin.sh , e embora isso tenha um efeito se eu executar minha implantação como um script Jython com wsadmin.sh diretamente, não parece ter qualquer impacto na execução de <wsInstallApp> no script Ant.

De acordo com a documentação da IBM de wsInstallApp :

The properties attribute is optional and it contains a java properties file containing attributes to set in the JVM System properties

No meu arquivo jvm.properties , tentei:

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

Isso não teve efeito. A execução de ws_ant.sh com a sinalização -v mostrou que, em algum lugar, o valor -Xmx é definido como -Xmx256m . Eu tentei várias outras combinações e formatos de cérebro, mas nada parece funcionar.

Eu também tentei adicionar argumentos na chamada ws_ant.sh :

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

... mas isso também parece não fazer nada.

O que estou fazendo errado? Admito que, se pressionado, eu provavelmente poderia atender aos meus requisitos, reescrevendo a implantação usando wsadmin.sh e um script Jython, mas estou tentando aproveite alguns scripts extensos do Ant a partir de um aplicativo EAR diferente.

Alternativas? Eu também reconheço que eu poderia usar a tarefa <wsadmin> Ant para chamar alguns scripts Jython de Ant - eu ainda não tentei isso-- mas, novamente, já temos alguns scripts extensos. Quais são as vantagens e desvantagens relativas de um caminho versus o outro? (isto é, executar o script wsadmin.sh / Jython via <[ssh]exec> ou <wsadmin> versus <wsInstallApp> [e seus "ws

por PattMauler 09.04.2015 / 05:21

3 respostas

0

Tente o atributo 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" />
    
por 12.05.2015 / 13:30
0

Para ws_ant.sh, você precisa usar a variável JVM_EXTRA_CMD_ARGS env.

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

Para provar o ponto, troque os tamanhos mínimo e máximo "-Xms2G -Xmx1G" e você receberá o erro:

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.
    
por 17.03.2016 / 19:04
0

Estamos usando o Maven para implantação e posso confirmar, adicionando o jvmMaxMemory ao wsInstallApp. Eu tive que desembolsar o plugin original e adicionar o suporte para isso.

    
por 18.04.2018 / 16:34