Quarkus: Alkalmazások korszerűsítése Helloworld példaként a JBoss EAP Quickstartból (folytatás)

Üdv mindenkinek – ez az ötödik bejegyzés Quarkus sorozatunkban! (Egyébként nézze meg webináriumunkat "Ez a Quarkus – Kubernetes natív Java keretrendszer". Megmutatjuk, hogyan kezdje el a nulláról, vagy vigye át kész megoldásokat)

Quarkus: Alkalmazások korszerűsítése Helloworld példaként a JBoss EAP Quickstartból (folytatás)

В előző poszt Java alkalmazások modernizálását néztük meg Quarkus által támogatott technológiákkal (CDI és Servlet 3) a repository helloworld programjával példaként Red Hat JBoss Enterprise Application Platform (JBoss EAP) – rövid útmutató. Ma folytatjuk a modernizáció témáját, és megvitatjuk a memóriafelhasználás kérdését.

A teljesítménymérés szinte minden frissítés alapja, a memóriahasználati jelentés pedig a teljesítményelemzési folyamat fontos része. Ma áttekintjük azokat a releváns mérőeszközöket, amelyek segítségével számszerűsíthetőek a Java alkalmazások modernizálásával elért fejlesztések.

A memóriahasználat mérésével kapcsolatos további információkért tekintse meg a Quarkus oktatóanyagát A teljesítmény mérése – Hogyan mérjük a memóriahasználatot?

Az alábbiakban egyszerűen bemutatjuk, hogyan hasonlíthatja össze három különböző típusú alkalmazás (JBoss EAP, JAR csomag és futtatható) memóriahasználati adatait az adatok Linuxon a pmap és ps segédprogramok segítségével történő összegyűjtésével.

JBoss EAP

Elindítjuk a JBoss EAP alkalmazás egy példányát (lásd a „helloworld telepítése” részt előző poszt), majd keresse meg a folyamat PID-jét (példánkban ez 7268) a következő paranccsal:

$ pgrep -lf jboss
7268 java

Megjegyzés. Az –a kapcsoló lehetővé teszi a teljes parancssor kibontását (pl. $ pgrep -af jboss).

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

Itt van:

$ 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:

$ 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

Megnézzük az RSS értéket, és azt látjuk, hogy a JBoss EAP körülbelül 650 MB memóriát fogyaszt.

JAR csomag

Elindítjuk a JAR alkalmazást (lásd a „JAR-ba csomagolt helloworld futtatása” részt előző poszt):

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

Újra megnézzük a PID-t a pgrep paranccsal (ezúttal a fent leírt -a kapcsolót használjuk):

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

A ps-t és a pmap-ot futtatjuk a memóriahasználat mérésére, de most a 6408-as folyamatra.

Itt van:

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

És így:

$ 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 azt látjuk, hogy a JAR csomag körülbelül 130 MB-ot fogyaszt.

Végrehajtható fájl

Elindítjuk a natív fájlt (lásd a „Natív helloworld futtatható fájl futtatása” című részt előző poszt):

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

Nézzük újra a PID-jét:

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

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

Itt van:

$ 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

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

A memóriafogyasztás összehasonlítása

Tehát a memóriahasználathoz a következő számokat kaptuk:

  • 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 foglal el.

Foglaljuk össze a 4. és 5. bejegyzést

Ebben és a korábbi bejegyzésekben a Java-alkalmazások Quarkusban támogatott technológiákkal (CDI és Servlet 3) történő modernizálását, valamint az ilyen alkalmazások fejlesztésének, elkészítésének és futtatásának különféle módjait vizsgáltuk. Megmutattuk, hogyan lehet memóriahasználati adatokat gyűjteni az ilyen frissítéssel elért javulás értékeléséhez. Ezek a cikkek segítenek megérteni, hogyan működik a Quarkus és miért hasznos – akár a példáinkban szereplő egyszerű helloworld programról, akár sokkal összetettebb valós alkalmazásokról beszélünk.

Két hét múlva visszatérünk egy utolsó bejegyzéssel a Quarkusról – ott találkozunk!

Utolsó bejegyzésünkben bemutatjuk, hogyan kombinálhatjuk az AMQ Online-t és a Quarkust egy modern OpenShift-alapú üzenetküldő rendszer felépítéséhez, két új üzenetkezelési technológia segítségével. Olvass tovább link.

Forrás: will.com

Hozzászólás