Quarkus: modernització d'aplicacions utilitzant Helloworld com a exemple de JBoss EAP Quickstart (continuació)

Hola a tots, aquesta és la cinquena publicació de la nostra sèrie Quarkus! (Per cert, mireu el nostre seminari web "Això és Quarkus - el marc natiu Java de Kubernetes". Us mostrarem com començar des de zero o transferir solucions ja fetes)

Quarkus: modernització d'aplicacions utilitzant Helloworld com a exemple de JBoss EAP Quickstart (continuació)

В publicació anterior vam analitzar la modernització d'aplicacions Java mitjançant tecnologies compatibles amb Quarkus (CDI i Servlet 3) utilitzant el programa helloworld del dipòsit com a exemple Inici ràpid de Red Hat JBoss Enterprise Application Platform (JBoss EAP).. Avui continuarem amb el tema de la modernització i parlarem del tema del consum de memòria.

La mesura del rendiment és la base fonamental de gairebé qualsevol actualització, i els informes d'ús de la memòria són una part important del procés d'anàlisi del rendiment. Avui veurem les eines de mesura rellevants que es poden utilitzar per quantificar les millores aconseguides amb la modernització de les aplicacions Java.

Per obtenir més informació sobre com mesurar l'ús de la memòria, consulteu el tutorial de Quarkus titulat Mesurar el rendiment: com mesurem l'ús de la memòria?

A continuació, simplement us mostrarem com comparar les dades d'ús de la memòria per a tres tipus diferents d'aplicacions (JBoss EAP, paquet JAR i executable) recopilant les dades a Linux mitjançant les utilitats pmap i ps.

JBoss EAP

Llancem una instància de l'aplicació JBoss EAP (vegeu la secció "Desplegar helloworld" a publicació anterior) i, a continuació, cerqueu el seu PID de procés (al nostre exemple és 7268) mitjançant l'ordre següent:

$ pgrep -lf jboss
7268 java

Nota. L'opció –a us permet extreure la línia d'ordres completa (és a dir: $ pgrep -af jboss).

Ara fem servir PID 7268 a les ordres ps i pmap.

Aquí així:

$ 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

I així:

$ 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

Mirem el valor RSS i veiem que JBoss EAP consumeix aproximadament 650 MB de memòria.

Paquet JAR

Llencem l'aplicació JAR (vegeu la secció "Executar helloworld empaquetat en JAR" a publicació anterior):

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

Tornem a mirar el PID mitjançant l'ordre pgrep (aquesta vegada fem servir l'opció -a descrita anteriorment):

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

Executem ps i pmap per mesurar l'ús de memòria, però ara per al procés 6408.

Aquí així:

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

I així:

$ 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

Tornem a mirar l'RSS i veiem que el paquet JAR consumeix aproximadament 130 MB.

Fitxer executable

Llancem el natiu (vegeu la secció "Execució del fitxer executable natiu helloworld" a publicació anterior):

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

Mirem de nou el seu PID:

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

A continuació, utilitzem l'ID de procés resultant (6948) a les ordres ps i pmap.

Aquí així:

$ 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

Observem l'RSS i veiem que el fitxer executable ocupa uns 20 MB de memòria.

Comparació del consum de memòria

Així, hem obtingut els següents números per a l'ús de la memòria:

  • JBoss EAP - 650 MB.
  • Paquet JAR: 130 MB.
  • Fitxer executable - 20 MB.

Evidentment, el fitxer executable ocupa molta menys memòria.

Resumim les publicacions 4 i 5

En aquest article i en els anteriors, vam analitzar la modernització d'aplicacions Java utilitzant tecnologies compatibles amb Quarkus (CDI i Servlet 3), així com diverses maneres de desenvolupar, construir i executar aquestes aplicacions. Hem mostrat com recopilar dades d'ús de la memòria per avaluar les millores aconseguides amb aquesta actualització. Aquests articles us ajuden a entendre com funciona Quarkus i per què és útil, tant si parleu del senzill programa helloworld als nostres exemples com d'aplicacions de la vida real molt més complexes.

Tornarem d'aquí a dues setmanes amb una publicació final sobre Quarkus, ens veiem allà!

A la nostra publicació final, mostrarem com combinar AMQ Online i Quarkus per crear un sistema de missatgeria modern basat en OpenShift utilitzant dues noves tecnologies de missatgeria. Segueix llegint enllaç.

Font: www.habr.com

Afegeix comentari