Quarkus: Modènize aplikasyon yo itilize Helloworld kòm yon egzanp nan JBoss EAP Quickstart (kontinye)

Bonjou tout moun - sa a se senkyèm pòs nan seri Quarkus nou an! (Bon wout la, gade webinar nou an "Sa a se Quarkus - Kubernetes natif natal kad Java". Nou pral montre w ki jan yo kòmanse nan grafouyen oswa transfere solisyon pare-fè)

Quarkus: Modènize aplikasyon yo itilize Helloworld kòm yon egzanp nan JBoss EAP Quickstart (kontinye)

В pòs anvan nou te gade modènize aplikasyon Java lè l sèvi avèk teknoloji Quarkus sipòte (CDI ak Servlet 3) lè l sèvi avèk pwogram helloworld ki soti nan depo a kòm yon egzanp. Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart. Jodi a nou pral kontinye sijè a nan modènizasyon ak diskite sou pwoblèm nan nan konsomasyon memwa.

Mezi pèfòmans se baz fondamantal prèske nenpòt amelyorasyon, ak rapò sou itilizasyon memwa se yon pati enpòtan nan pwosesis analiz pèfòmans. Jodi a nou pral gade nan zouti mezi ki enpòtan yo ka itilize pou quantifier amelyorasyon yo reyalize nan modènize aplikasyon Java yo.

Pou plis enfòmasyon sou mezi itilizasyon memwa, gade leson patikilye Quarkus ki gen tit Mezire pèfòmans—Ki jan nou mezire itilizasyon memwa?

Anba a nou pral tou senpleman montre w kouman pou konpare done itilizasyon memwa pou twa diferan kalite aplikasyon (JBoss EAP, pake JAR, ak ègzèkutabl) lè w kolekte done yo sou Linux lè l sèvi avèk sèvis piblik pmap ak ps.

JBoss EAP

Nou lanse yon egzanp aplikasyon JBoss EAP (gade seksyon "Deplwaye helloworld" nan pòs anvan) ak Lè sa a, gade PID pwosesis li yo (nan egzanp nou an li se 7268) lè l sèvi avèk lòd sa a:

$ pgrep -lf jboss
7268 java

Note. Opsyon –a a pèmèt ou ekstrè liy lòd konplè a (sa vle di: $ pgrep -af jboss).

Koulye a, nou itilize PID 7268 nan kòmandman ps ak pmap yo.

Isit la konsa:

$ 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

Epi tankou sa a:

$ 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

Nou gade valè RSS a epi nou wè ke JBoss EAP konsome apeprè 650 MB memwa.

Pake JAR

Nou lanse aplikasyon JAR (gade seksyon "Kouri helloworld pake nan JAR" nan pòs anvan):

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

Yon fwa ankò nou gade nan PID la lè l sèvi avèk lòd pgrep la (fwa sa a nou itilize opsyon -a ki dekri pi wo a):

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

Nou kouri ps ak pmap pou mezire itilizasyon memwa, men kounye a pou pwosesis 6408.

Isit la konsa:

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

Epi tankou sa a:

$ 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

Nou gade nan RSS a ankò epi wè ke pake JAR la konsome apeprè 130 MB.

Fichye ègzekutabl

Nou lanse yon sèl natif natal la (gade seksyon an "Kouri dosye natif natal helloworld ègzekutabl la" nan pòs anvan):

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

Ann gade nan PID li ankò:

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

Apre sa, nou itilize ID pwosesis ki kapab lakòz (6948) nan kòmandman ps ak pmap.

Isit la konsa:

$ 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

Nou gade RSS a epi wè ke dosye a ègzèkutabl pran apeprè 20 MB nan memwa.

Konpare konsomasyon memwa

Se konsa, nou jwenn nimewo sa yo pou itilizasyon memwa:

  • JBoss EAP - 650 MB.
  • Pake JAR - 130 MB.
  • Fichye ègzekutabl - 20 MB.

Li evidan, dosye a ègzèkutabl pran anpil mwens memwa.

Ann rezime pòs 4 ak 5

Nan pòs sa a ak pòs anvan yo, nou te gade modènizasyon aplikasyon Java lè l sèvi avèk teknoloji ki sipòte nan Quarkus (CDI ak Servlet 3), ansanm ak divès fason yo devlope, bati ak kouri aplikasyon sa yo. Nou te montre ki jan yo kolekte done itilizasyon memwa pou evalye amelyorasyon yo reyalize pa yon amelyorasyon konsa. Atik sa yo ede w konprann ki jan Quarkus travay ak poukisa li itil—si w ap pale de senp pwogram helloworld nan egzanp nou yo oswa aplikasyon ki pi konplèks nan lavi reyèl.

Nou pral tounen nan de semèn ak yon pòs final sou Quarkus - na wè la!

Nan pòs final nou an, nou pral montre kijan pou konbine AMQ Online ak Quarkus pou konstwi yon sistèm messagerie modèn ki baze sou OpenShift lè l sèvi avèk de nouvo teknoloji messagerie. Li kontinye lyen.

Sous: www.habr.com

Add nouvo kòmantè