Quarkus: Modernizimi i aplikacioneve përmes shembullit helloworld nga JBoss EAP Quickstart (vazhdim)

PĂ«rshĂ«ndetje tĂ« gjithĂ«ve – ky Ă«shtĂ« postimi i pestĂ« nĂ« serinĂ« tonĂ« mbi Quarkus! (PĂ«r mĂ« tepĂ«r, shikoni seminarin tonĂ« nĂ« internet «Kjo Ă«shtĂ« Quarkus – njĂ« framework Java native pĂ«r Kubernetes». Do tĂ« tregojmĂ« se si tĂ« filloni «nga zero» ose tĂ« trasferoni zgjidhjet e gatshme)

Quarkus: Modernizimi i aplikacioneve përmes shembullit helloworld nga JBoss EAP Quickstart (vazhdim)

Në postimin e kaluar ne shqyrtuam modernizimin e aplikacioneve Java duke përdorur teknologjitë e suportuara nga Quarkus (CDI dhe Servlet 3) përmes programit helloworld nga repozitori Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart. Sot do të vazhdojmë temën e modernizimit dhe do të diskutojmë çështjen e konsumit të memories.

Matja e performancës është një themel i rëndësishëm për pothuajse çdo modernizim, dhe raportet mbi përdorimin e memories janë një pjesë e rëndësishme e procesit të analizës së performancës. Sot do të shqyrtojmë mjetet përkatëse të matjes, me ndihmën e të cilave mund të vlerësojmë sasiisht përmirësimet e arritura si rezultat i modernizimit të aplikacioneve Java.

Detaje mbi matjen e pĂ«rdorimit tĂ« memories mund tĂ« gjenden nĂ« udhĂ«zimin Quarkus tĂ« titulluar Measuring Performance—How do we measure memory usage?

Më poshtë do të tregojmë thjesht se si të krahasojmë të dhënat mbi përdorimin e memories nga tri lloje të ndryshme aplikacionesh (JBoss EAP, paketë JAR dhe skedari ekzekutiv), duke mbledhur këto të dhëna në Linux me ndihmën e utilitarëve pmap dhe ps.

JBoss EAP

Dëshirojmë një shembull të aplikacionit JBoss EAP (shihni seksionin "Zhvillimi i helloworld" në postimin e kaluar) dhe më pas shikoni identifikatorin e tij të procesit PID (në shembullin tonë, ky është 7268) me ndihmën e komandës së mëposhtme:

$ pgrep -lf jboss
7268 java

ShĂ«nim. Opsioni –a lejon nxjerrjen e komandĂ«s sĂ« plotĂ« (dmth: $ pgrep -af jboss).

Tani përdorim PID 7268 në komandat ps dhe pmap.

Ja si:

$ 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

Dhe ja si:

$ 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

Shikojmë vlerën RSS dhe shohim se JBoss EAP konsumon rreth 650 MB memorie.

Pako JAR

Nisim aplikacionin JAR (shihni seksionin "Nisim helloworld, e paketuar në JAR" në postimin e kaluar):

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

Përsëri shikojmë PID duke përdorur komandën pgrep (këtë herë përdorim opsionin e përshkruar më lart -a):

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

Nisim ps dhe pmap për të matur përdorimin e memories, por tani për procesin 6408.

Ja si:

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

Dhe ja si:

$ 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

Përsëri shikojmë RSS dhe shohim se pako JAR konsumon rreth 130 MB.

Skedari ekzekutues

Nisim natyroren (shihni seksionin "Nisim skedarin ekzekutues helloworld" në postimin e kaluar):

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

Përsëri shikojmë PID-në e tij:

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

Dhe më pas përdorim identifikatorin e marrë të procesit (6948) në komandat ps dhe pmap.

Ja si:

$ ps -o pid,rss,command -p 6948
  PID   RSS COMMAND
 6948 19084 ./target/helloworld-quarkus-runner
Dhe kështu:
$ 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

Shikojmë RSS dhe shohim se skedari ekzekutues merr rreth 20 MB memorie.

Krahasojmë konsumimin e memories

Pra, kemi marrë këto shifra për përdorimin e memories:

  • JBoss EAP – 650 MB.
  • Pako JAR – 130 MB.
  • Skedari ekzekutues – 20 MB.

Qartë, skedari ekzekutues merr shumë më pak memorie.

Bëjmë përmbledhjen e postimeve 4 dhe 5

NĂ« kĂ«tĂ« postim dhe postimet e kaluara, kemi shqyrtuar çështjen e modernizimit tĂ« aplikacioneve Java duke pĂ«rdorur teknologjitĂ« e mbĂ«shtetura nĂ« Quarkus (CDI dhe Servlet 3), si dhe mĂ«nyrat e ndryshme tĂ« zhvillimit, ndĂ«rtimit dhe ekzekutimit tĂ« kĂ«tyre aplikacioneve. Kemi treguar se si tĂ« realizoni mbledhjen e tĂ« dhĂ«nave mbi pĂ«rdorimin e memories pĂ«r tĂ« vlerĂ«suar pĂ«rmirĂ«simet e arritura si rezultat i kĂ«tij modernizimi. KĂ«to artikuj ndihmojnĂ« nĂ« kuptimin e mĂ«nyrĂ«s se si funksionon Quarkus dhe cilat janĂ« pĂ«rfitimet e tij – pavarĂ«sisht nĂ«se flasim pĂ«r programin mĂ« tĂ« thjeshtĂ« helloworld nga shembujt tanĂ« apo pĂ«r aplikacione shumĂ« mĂ« komplekse nga jeta reale.

Do tĂ« kthehemi pas dy javĂ«sh me postimin pĂ«rfundimtar mbi Quarkus – mirĂ« se tĂ« shohim!

Në postimin tonë përfundimtar, do të tregojmë se si të kombinojmë AMQ Online me Quarkus për të ndërtuar një sistem modern të komunikimit mbi baza OpenShift duke përdorur dy teknologji të reja që lidhen me përpunimin e mesazheve. Lexoni më linkun.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster