Quarkus: Aplikazioak modernizatzea Helloworld JBoss EAP Quickstart-en adibide gisa erabiliz (jarraipena)

Kaixo guztioi - hau da gure Quarkus serieko bosgarren mezua! (Bide batez, ikusi gure webinarra "Hau Quarkus - Kubernetes jatorrizko Java esparrua da". Hutsetik hasi edo prest dauden irtenbideak nola transferitzen erakutsiko dizugu)

Quarkus: Aplikazioak modernizatzea Helloworld JBoss EAP Quickstart-en adibide gisa erabiliz (jarraipena)

Π’ aurreko mezua Quarkus-ek onartzen dituen teknologiak erabiliz Java aplikazioak modernizatzea aztertu dugu (CDI eta Servlet 3) biltegiko helloworld programa erabiliz adibide gisa. Red Hat JBoss Enterprise Application Platform (JBoss EAP) Hasiera azkarra. Gaur modernizazioaren gaiarekin jarraituko dugu eta memoria kontsumoaren gaia eztabaidatuko dugu.

Errendimenduaren neurketa ia edozein bertsio berritzeko oinarrizko oinarria da, eta memoria-erabileraren txostena errendimendua aztertzeko prozesuaren zati garrantzitsu bat da. Gaur Java aplikazioak modernizatuz lortutako hobekuntzak kuantifikatzeko erabil daitezkeen neurketa tresna garrantzitsuak aztertuko ditugu.

Memoriaren erabilera neurtzeari buruzko informazio gehiago lortzeko, ikusi Quarkus izeneko tutoriala Errendimendua neurtzea: nola neurtzen dugu memoriaren erabilera?

Jarraian, hiru aplikazio mota ezberdinetarako (JBoss EAP, JAR paketea eta exekutagarria) memoriaren erabilera datuak nola alderatu erakutsiko dizugu Linux-en datuak bilduz pmap eta ps utilitateak erabiliz.

JBoss EAP

JBoss EAP aplikazioaren instantzia bat abiarazten dugu (ikus "Helloworld inplementatzea" atalean aurreko mezua) eta gero begiratu bere prozesuaren PID (gure adibidean 7268 da) komando hau erabiliz:

$ pgrep -lf jboss
7268 java

Oharra. –a aukerak komando-lerro osoa ateratzeko aukera ematen du (hau da: $ pgrep -af jboss).

Orain PID 7268 erabiltzen dugu ps eta pmap komandoetan.

Hona hemen:

$ 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

Eta honela:

$ 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

RSS balioari erreparatzen diogu eta ikusten dugu JBoss EAP-ek 650 MB-ko memoria gutxi gorabehera kontsumitzen duela.

JAR paketea

JAR aplikazioa abiarazten dugu (ikusi "Exekutatu helloworld JAR-en paketatua" atalean aurreko mezua):

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

PID-a berriro begiratuko dugu pgrep komandoa erabiliz (oraingoan goian deskribatutako -a aukera erabiliko dugu):

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

ps eta pmap exekutatzen ditugu memoriaren erabilera neurtzeko, baina orain 6408 prozesurako.

Hona hemen:

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

Eta honela:

$ 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

RSSari begiratuko diogu berriro eta JAR paketeak 130 MB gutxi gorabehera kontsumitzen dituela ikusten dugu.

Fitxategi exekutagarria

Jatorrizkoa abiarazten dugu (ikus "Helloworld jatorrizko fitxategi exekutagarria exekutatu" atalean aurreko mezua):

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

Ikus dezagun berriro bere PID-a:

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

Eta gero, ondoriozko prozesuaren IDa (6948) erabiltzen dugu ps eta pmap komandoetan.

Hona hemen:

$ 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

RSSari begiratu eta fitxategi exekutagarriak 20 MB inguru hartzen dituela ikusten dugu.

Memoria-kontsumoa alderatuz

Beraz, honako zenbaki hauek lortu ditugu memoria erabiltzeko:

  • JBoss EAP - 650 MB.
  • JAR paketea - 130 MB.
  • Fitxategi exekutagarria - 20 MB.

Jakina, fitxategi exekutagarriak memoria askoz gutxiago hartzen du.

Laburtu ditzagun 4. eta 5. mezuak

Argitalpen honetan eta aurrekoetan, Quarkus-en onartzen diren teknologiak erabiliz Java aplikazioak modernizatzea aztertu dugu (CDI eta Servlet 3), baita aplikazio horiek garatzeko, eraikitzeko eta exekutatzeko hainbat modu ere. Memoria-erabileraren datuak nola bildu erakutsi genuen berritze horrek lortutako hobekuntzak ebaluatzeko. Artikulu hauek Quarkusek nola funtzionatzen duen eta zergatik den erabilgarria ulertzen laguntzen dizute, gure adibideetako helloworld programa soilaz edo bizitza errealeko aplikazio askoz konplexuagoez ari zaren.

Bi aste barru itzuliko gara Quarkus-i buruzko azken argitalpen batekin. Han ikusiko gara!

Gure azken argitalpenean, AMQ Online eta Quarkus nola konbinatu erakutsiko dugu OpenShift-en oinarritutako mezularitza-sistema moderno bat eraikitzeko bi mezularitza teknologia berri erabiliz. Irakurri link.

Iturria: www.habr.com

Gehitu iruzkin berria