Quarkus: Modernizando aplicacións usando Helloworld como exemplo de JBoss EAP Quickstart (continuación)

Ola a todos: esta é a quinta publicación da nosa serie Quarkus! (Por certo, mira o noso webinar "Este é Quarkus - framework Java nativo de Kubernetes". Mostrémosche como comezar desde cero ou transferir solucións xa preparadas)

Quarkus: Modernizando aplicacións usando Helloworld como exemplo de JBoss EAP Quickstart (continuación)

В publicación anterior analizamos a modernización de aplicacións Java usando tecnoloxías compatibles con Quarkus (CDI e Servlet 3) usando o programa helloworld do repositorio como exemplo Inicio rápido de Red Hat JBoss Enterprise Application Platform (JBoss EAP).. Hoxe continuaremos co tema da modernización e trataremos o tema do consumo de memoria.

A medición do rendemento é a base fundamental de case calquera actualización, e os informes de uso da memoria son unha parte importante do proceso de análise de rendemento. Hoxe veremos as ferramentas de medición relevantes que se poden utilizar para cuantificar as melloras conseguidas coa modernización das aplicacións Java.

Para obter máis información sobre como medir o uso da memoria, consulte o tutorial de Quarkus Medición do rendemento: como medimos o uso da memoria?

A continuación, mostrarémosche como comparar os datos de uso da memoria para tres tipos diferentes de aplicacións (JBoss EAP, paquete JAR e executable) recollendo os datos en Linux mediante as utilidades pmap e ps.

JBoss EAP

Lanzamos unha instancia da aplicación JBoss EAP (consulte a sección "Implementación de helloworld" en publicación anterior) e despois busque o seu PID de proceso (no noso exemplo é 7268) usando o seguinte comando:

$ pgrep -lf jboss
7268 java

Nota. A opción –a permítelle extraer a liña de comandos completa (por exemplo: $ pgrep -af jboss).

Agora usamos PID 7268 nos comandos ps e pmap.

Aquí así:

$ ps -o pid,rss,command -p 7268
PID RSS COMMAND 
7268 665348 java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferI

E así:

$ pmap -x 7268
7268:   java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standa
Address           Kbytes     RSS   Dirty Mode  Mapping
00000000ae800000 1348608  435704  435704 rw---   [ anon ]
0000000100d00000 1035264       0       0 -----   [ anon ]
000055e4d2c2f000       4       4       0 r---- java
000055e4d2c30000       4       4       0 r-x-- java
000055e4d2c31000       4       0       0 r---- java
000055e4d2c32000       4       4       4 r---- java
000055e4d2c33000       4       4       4 rw--- java
[...]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB         3263224  672772  643024

Observamos o valor RSS e vemos que JBoss EAP consome aproximadamente 650 MB de memoria.

Paquete JAR

Lanzamos a aplicación JAR (consulte a sección "Executar helloworld empaquetado en JAR" en publicación anterior):

$ java -jar ./target/helloworld-<version>-runner.jar

De novo miramos o PID usando o comando pgrep (esta vez usamos a opción -a descrita anteriormente):

$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar

Executamos ps e pmap para medir o uso da memoria, pero agora para o proceso 6408.

Aquí así:

$ ps -o pid,rss,command -p 6408
  PID   RSS COMMAND
 6408 125732 java -jar ./target/helloworld-quarkus-runner.jar

E así:

$ pmap -x 6408
6408:   java -jar ./target/helloworld-quarkus-runner.jar
Address           Kbytes     RSS   Dirty Mode  Mapping
00000005d3200000  337408       0       0 rw---   [ anon ]
00000005e7b80000 5046272       0       0 -----   [ anon ]
000000071bb80000  168448   57576   57576 rw---   [ anon ]
0000000726000000 2523136       0       0 -----   [ anon ]
00000007c0000000    2176    2088    2088 rw---   [ anon ]
00000007c0220000 1046400       0       0 -----   [ anon ]
00005645b85d6000       4       4       0 r---- java
00005645b85d7000       4       4       0 r-x-- java
00005645b85d8000       4       0       0 r---- java
00005645b85d9000       4       4       4 r---- java
00005645b85da000       4       4       4 rw--- java
[...]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB         12421844  133784  115692

Miramos de novo o RSS e vemos que o paquete JAR consome aproximadamente 130 MB.

Arquivo executable

Lanzamos o nativo (consulte a sección "Executar o ficheiro executable nativo de helloworld" en publicación anterior):

$ ./target/helloworld-<version>-runner

Vexamos de novo o seu PID:

$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner

E despois usamos o ID de proceso resultante (6948) nos comandos ps e pmap.

Aquí así:

$ ps -o pid,rss,command -p 6948
  PID   RSS COMMAND
 6948 19084 ./target/helloworld-quarkus-runner
И вот так:
$ pmap -x 6948
6948:   ./target/helloworld-quarkus-runner
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000      12      12       0 r---- helloworld-quarkus-runner
0000000000403000   10736    8368       0 r-x-- helloworld-quarkus-runner
0000000000e7f000    7812    6144       0 r---- helloworld-quarkus-runner
0000000001620000    2024    1448     308 rw--- helloworld-quarkus-runner
000000000181a000       4       4       4 r---- helloworld-quarkus-runner
000000000181b000      16      16      12 rw--- helloworld-quarkus-runner
0000000001e10000    1740     156     156 rw---   [ anon ]
[...]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB         1456800   20592    2684

Observamos o RSS e vemos que o ficheiro executable ocupa uns 20 MB de memoria.

Comparando o consumo de memoria

Entón, obtivemos os seguintes números para o uso da memoria:

  • JBoss EAP - 650 MB.
  • Paquete JAR: 130 MB.
  • Ficheiro executable - 20 MB.

Obviamente, o ficheiro executable ocupa moita menos memoria.

Imos resumir as publicacións 4 e 5

Nesta publicación e nas anteriores, analizamos a modernización de aplicacións Java utilizando tecnoloxías compatibles con Quarkus (CDI e Servlet 3), así como varias formas de desenvolver, construír e executar tales aplicacións. Amosamos como recoller datos de uso da memoria para avaliar as melloras conseguidas por tal actualización. Estes artigos axúdanche a comprender como funciona Quarkus e por que é útil, tanto se estás falando do sinxelo programa helloworld dos nosos exemplos como de aplicacións da vida real moito máis complexas.

Volveremos dentro de dúas semanas cunha publicación final sobre Quarkus. Vémonos alí!

Na nosa publicación final, mostraremos como combinar AMQ Online e Quarkus para construír un moderno sistema de mensaxería baseado en OpenShift utilizando dúas novas tecnoloxías de mensaxería. Sigue lendo Ligazón.

Fonte: www.habr.com

Engadir un comentario