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

Në 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 . 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
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ë ) 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ë ):
$ 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ë ):
$ ./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 .
Burimi: habr.com
