Quarkus: Az alkalmazások modernizálása a JBoss EAP Quickstart helloworld példáján keresztül (folytatás)

Helló mindenkinek – itt a fifth bejegyzés a Quarkus sorozatunkból! (Egyébként nézd meg a webináriumunkat „Ez a Quarkus – a Kubernetes natív Java keretrendszer“. Megmutatjuk, hogyan lehet „nulláról“ indítani vagy kész megoldásokat átvinni.)

Quarkus: Az alkalmazások modernizálása a JBoss EAP Quickstart helloworld példáján keresztül (folytatás)

A korábbi bejegyzésben a Quarkus által támogatott technológiák (CDI és Servlet 3) segítségével modernizált Java-alkalmazásokat vizsgáltunk meg a helloworld program példáján, amely a repóban található Red Hat JBoss Enterprise Application Platform (JBoss EAP) Gyorsindítás. Ma folytatjuk a modernizálás témáját, és megvitatjuk a memóriafogyasztás kérdését.

A teljesítménymérés alapvető fontosságú szinte minden modernizálásban, és a memóriahasználatról szóló jelentések a teljesítményértékelési folyamat fontos részét képezik. Ma azokat a megfelelő mérési eszközöket fogjuk megvizsgálni, amelyek segítségével mennyiségileg értékelhetjük a Java-alkalmazások modernizálásának eredményeit.

A memóriahasználat méréséről részleteket találhatunk a Quarkus útmutatójában, amelynek címe Teljesítmény mérése – Hogyan mérjük a memóriahasználatot?

A következőkben bemutatjuk, hogyan hasonlíthatjuk össze a memóriahasználati adatokat három különböző alkalmazástípus esetében (JBoss EAP, JAR-csomag és végrehajtható fájl), a pmap és ps eszközökkel gyűjtve ezeket az adatokat Linux alatt.

JBoss EAP

Elindítjuk a JBoss EAP alkalmazás példányát (lásd a "Helloworld telepítése" részt a korábbi bejegyzésben) és ezután megnézzük a folyamatazonosítóját (PID) a következő parancs segítségével:

$ pgrep -lf jboss
7268 java

Megjegyzés. Az -a opció lehetővé teszi a teljes parancssor megjelenítését (azaz: $ pgrep -af jboss).

Most használjuk a 7268 PID-t a ps és pmap parancsokban.

Így:

$ 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

És így néz ki:

$ 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

Nézzük meg az RSS értékét, és látjuk, hogy a JBoss EAP körülbelül 650 MB memóriát használ.

JAR csomag

Futtatjuk a JAR alkalmazást (lásd a 'Helloworld JAR-ba csomagolásának indítása' részt) korábbi bejegyzésben):

$ java -jar ./target/helloworld--runner.jar

Újra megnézzük a PID-t a pgrep parancs segítségével (ezúttal a fent említett -a opciót használva):

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

Futtatjuk a ps-t és a pmap-t, hogy mérjük a memóriahasználatot, de most a 6408-as folyamathoz.

Így:

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

És így néz ki:

$ 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

Újra megnézzük az RSS-t, és látjuk, hogy a JAR csomag körülbelül 130 MB-ot fogyaszt.

Néhány fájl

Futtatjuk a natív binárist (lásd a 'Helloworld natív binárisának indítása' részt) korábbi bejegyzésben):

$ ./target/helloworld--runner

Újra megnézzük a PID-jét:

$ pgrep -af helloworld
6948 ./target/helloworld--runner

Majd használjuk a kapott folyamatazonosítót (6948) a ps és pmap parancsokban.

Így:

$ ps -o pid,rss,command -p 6948
  PID   RSS COMMAND
 6948 19084 ./target/helloworld-quarkus-runner
És így:
$ 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

Nézzük meg az RSS-t, és látjuk, hogy a futtatható fájl körülbelül 20 MB memóriát foglal el.

Összehasonlítjuk a memóriahasználatot

Tehát a következő számadatokat kaptuk a memóriahasználatról:

  • JBoss EAP – 650 MB.
  • JAR csomag – 130 MB.
  • Futtatható fájl – 20 MB.

Nyilvánvaló, hogy a futtatható fájl sokkal kevesebb memóriát használ.

Összegzés a 4. és 5. bejegyzéshez

Ebben és az előző bejegyzésben a Quarkus által támogatott technológiák (CDI és Servlet 3) használatával foglalkoztunk a Java-alkalmazások korszerűsítésének kérdésével, valamint a különböző fejlesztési, építési és futtatási módszerekkel. Megmutattuk, hogyan lehet adatokat gyűjteni a memóriahasználatról a korszerűsítés eredményeinek értékeléséhez. Ezek a cikkek segítenek megérteni, hogyan működik a Quarkus és milyen előnyöket nyújt – függetlenül attól, hogy a példáink között szereplő egyszerű helloworld programról vagy a valós életből származó sokkal bonyolultabb alkalmazásokról van szó.

Két hét múlva visszatérünk a Quarkus záróbejegyzésével – találkozunk!

Záróbejegyzésünkben megmutatjuk, hogyan lehet egyesíteni az AMQ Online-t és a Quarkus-t egy modern OpenShift alapú üzenetküldő rendszer létrehozásához, két új üzenetfeldolgozási technológia felhasználásával. Olvassa el a linkre kattintva.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster