Quarkus: modernizimi i aplikacioneve me shembullin helloworld nga JBoss EAP Quickstart (vazhdimi)

PĂ«rshĂ«ndetje tĂ« gjithĂ«ve – ky Ă«shtĂ« postimi i pestĂ« nga seria jonĂ« mbi Quarkus! (PĂ«r mĂ« tepĂ«r, shikoni webinarin tonĂ« «Ky Ă«shtĂ« Quarkus – njĂ« framework Java native pĂ«r Kubernetes». Do tĂ« tregojmĂ« se si tĂ« filloni «nga zero» ose tĂ« transferoni zgjidhje tĂ« gatshme)

Quarkus: modernizimi i aplikacioneve me shembullin helloworld nga JBoss EAP Quickstart (vazhdimi)

Në postimin e mëparshëm ne shqyrtuam modernizimin e aplikacioneve Java duke përdorur teknologjitë e mbështetura nga Quarkus (CDI dhe Servlet 3) në shembullin e 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ë mbi çështjen e konsumit të memories.

Matja e performancës është një bazë themelore 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ë sasinë e përmirësimeve të arritura nga modernizimi i aplikacioneve Java.

TĂ« dhĂ«nat mbi matjen e pĂ«rdorimit tĂ« memories mund tĂ« merren nga udhĂ«zuesi i Quarkus i quajtur Measuring Performance—Si e masim pĂ«rdorimin e memories?

Më poshtë, ne thjesht do të tregojmë se si të krahasojmë të dhënat e përdorimit të memories për tre lloje të ndryshme aplikacionesh (JBoss EAP, paketë JAR dhe skedari ekzekutues), duke mbledhur këto të dhëna në Linux me ndihmën e mjeteve pmap dhe ps.

JBoss EAP

Nisemi një instancë të aplikacionit JBoss EAP (shihni seksionin «Zhvillimi i helloworld» në postimin e mëparshëm) dhe më pas shikojmë identifikuesin e tij të procesit PID (në shembullin tonë, ky është 7268) me anë të komandës së mëposhtme:

$ pgrep -lf jboss
7268 java

ShĂ«nim. Opsioni –a lejon nxjerrjen e linjĂ«s sĂ« plotĂ« tĂ« komandĂ«s (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 KOMANDA 
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.

Paketë JAR

Nisim aplikacionin JAR (shihni seksionin «Nisim helloworld, i paketuar në JAR» në postimin e mëparshëm):

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

Përsëri shohim 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 po shohim RSS dhe shohim se paketi JAR konsumon rreth 130 MB.

Skedari ekzekutues

Po e nisim versionin natyral (shihni seksionin "Po e nisim skedarin ekzekutues helloworld" në postimin e mëparshëm):

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

Përsëri po shohim PID-në e tij:

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

Dhe pastaj përdorim identifikuesin e procesit të marrë (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
Adresa           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 ekzekutiv merr rreth 20 MB memorie.

Krahasojmë konsumimin e memories

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

  • JBoss EAP – 650 MB.
  • Paketa JAR – 130 MB.
  • Skedari ekzekutiv – 20 MB.

Sigurisht, skedari ekzekutiv merr shumë më pak memorie.

Përmbledhim postet 4 dhe 5

NĂ« kĂ«tĂ« dhe postin e mĂ«parshĂ«m, ne shqyrtuam çështjen e modernizimit tĂ« aplikacioneve Java duke pĂ«rdorur teknologjitĂ« e mbĂ«shtetura nĂ« Quarkus (CDI dhe Servleti 3), si dhe mĂ«nyrat e ndryshme tĂ« zhvillimit, ndĂ«rtimit dhe ekzekutimit tĂ« kĂ«tyre aplikacioneve. Ne treguam si tĂ« mbledhim tĂ« dhĂ«na pĂ«r pĂ«rdorimin e memories pĂ«r tĂ« vlerĂ«suar pĂ«rmirĂ«simet e arritura si rezultat i kĂ«saj modernizimi. KĂ«to artikuj ndihmojnĂ« nĂ« kuptimin se si funksionon Quarkus dhe nĂ« çfarĂ« pĂ«rfitimesh konsiston – pavarĂ«sisht nĂ«se bĂ«het fjalĂ« pĂ«r programin mĂ« tĂ« thjeshtĂ« helloworld nga shembujt tanĂ« ose pĂ«r aplikacione shumĂ« mĂ« komplekse nga jeta reale.

Ne do tĂ« kthehemi pas dy javĂ«sh me postimin pĂ«rfundimtar pĂ«r Quarkus – deri atĂ«herĂ«!

Në postimin tonë përfundimtar do të tregojmë si të kombinojmë AMQ Online dhe Quarkus për të ndërtuar një sistem modern mesazhesh mbi OpenShift duke përdorur dy teknologji të reja lidhur me përpunimin e mesazheve. Lexoni mbi lidhjes.

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster