Quarkus. հավելվածների արդիականացում՝ օգտագործելով Helloworld-ը որպես օրինակ JBoss EAP Quickstart-ից (շարունակություն)

Բարև բոլորին – սա մեր Quarkus շարքի հինգերորդ գրառումն է: (Ի դեպ, դիտեք մեր վեբինարը «Սա Quarkus – Kubernetes հայրենի Java շրջանակն է». Մենք ձեզ ցույց կտանք, թե ինչպես սկսել զրոյից կամ փոխանցել պատրաստի լուծումները)

Quarkus. հավելվածների արդիականացում՝ օգտագործելով Helloworld-ը որպես օրինակ JBoss EAP Quickstart-ից (շարունակություն)

В նախորդ գրառումը մենք դիտարկել ենք Java հավելվածների արդիականացումը՝ օգտագործելով Quarkus-ի աջակցվող տեխնոլոգիաները (CDI և Servlet 3)՝ որպես օրինակ՝ օգտագործելով helloworld ծրագիրը պահեստից: Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart. Այսօր մենք կշարունակենք արդիականացման թեման և կքննարկենք հիշողության սպառման հարցը։

Արդյունավետության չափումը գրեթե ցանկացած արդիականացման հիմնարար հիմքն է, և հիշողության օգտագործման հաշվետվությունը կատարողականի վերլուծության գործընթացի կարևոր մասն է: Այսօր մենք կդիտարկենք համապատասխան չափման գործիքները, որոնք կարող են օգտագործվել Java հավելվածների արդիականացման արդյունքում ձեռք բերված բարելավումների քանակական գնահատման համար:

Հիշողության օգտագործման չափման մասին լրացուցիչ տեղեկությունների համար տե՛ս Quarkus ձեռնարկը վերնագրով Արդյունավետության չափում. Ինչպե՞ս ենք մենք չափում հիշողության օգտագործումը:

Ստորև մենք պարզապես ցույց կտանք ձեզ, թե ինչպես կարելի է համեմատել հիշողության օգտագործման տվյալները երեք տարբեր տեսակի հավելվածների համար (JBoss EAP, JAR փաթեթ և գործարկվող)՝ հավաքելով տվյալները Linux-ում՝ օգտագործելով pmap և ps կոմունալ ծառայությունները:

JBoss EAP

Մենք գործարկում ենք JBoss EAP հավելվածի օրինակը (տես «Helloworld-ի տեղակայում» բաժինը նախորդ գրառումը) և այնուհետև փնտրեք դրա գործընթացի PID-ը (մեր օրինակում այն ​​7268 է)՝ օգտագործելով հետևյալ հրամանը.

$ pgrep -lf jboss
7268 java

Նշում. –a տարբերակը թույլ է տալիս հանել ամբողջական հրամանի տողը (այսինքն՝ $ pgrep -af jboss):

Այժմ մենք օգտագործում ենք PID 7268 ps և pmap հրամաններում:

Ահա այսպես.

$ 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

Եվ այսպես.

$ 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

Մենք նայում ենք RSS արժեքին և տեսնում ենք, որ JBoss EAP-ը սպառում է մոտավորապես 650 ՄԲ հիշողություն:

JAR փաթեթ

Մենք գործարկում ենք JAR հավելվածը (տե՛ս «Run helloworld փաթեթավորված JAR-ում» բաժինը նախորդ գրառումը):

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

Մենք կրկին նայում ենք PID-ին՝ օգտագործելով pgrep հրամանը (այս անգամ մենք օգտագործում ենք վերը նկարագրված -a տարբերակը).

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

Մենք գործարկում ենք ps և pmap՝ հիշողության օգտագործումը չափելու համար, բայց հիմա՝ 6408 պրոցեսի համար:

Ահա այսպես.

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

Եվ այսպես.

$ 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

Մենք նորից նայում ենք RSS-ին և տեսնում, որ JAR փաթեթը սպառում է մոտավորապես 130 ՄԲ:

Գործարկվող ֆայլ

Մենք գործարկում ենք բնօրինակը (տե՛ս «Գործարկել հայրենի helloworld գործարկվող ֆայլը» բաժինը նախորդ գրառումը):

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

Եկեք նորից նայենք դրա PID-ին.

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

Եվ հետո մենք օգտագործում ենք ստացված գործընթացի ID-ն (6948) ps և pmap հրամաններում:

Ահա այսպես.

$ 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

Մենք նայում ենք RSS-ին և տեսնում ենք, որ գործարկվող ֆայլը զբաղեցնում է մոտ 20 ՄԲ հիշողություն:

Հիշողության սպառման համեմատություն

Այսպիսով, մենք ստացանք հետևյալ թվերը հիշողության օգտագործման համար.

  • JBoss EAP - 650 ՄԲ:
  • JAR փաթեթ – 130 ՄԲ:
  • Գործարկվող ֆայլ – 20 ՄԲ:

Ակնհայտ է, որ գործարկվող ֆայլը շատ ավելի քիչ հիշողություն է խլում:

Ամփոփենք 4-րդ և 5-րդ գրառումները

Այս և նախորդ գրառումներում մենք դիտարկել ենք Java հավելվածների արդիականացումը՝ օգտագործելով Quarkus-ում աջակցվող տեխնոլոգիաները (CDI և Servlet 3), ինչպես նաև նման հավելվածներ մշակելու, ստեղծելու և գործարկելու տարբեր եղանակներ: Մենք ցույց տվեցինք, թե ինչպես կարելի է հավաքել հիշողության օգտագործման տվյալներ՝ գնահատելու նման արդիականացման արդյունքում ձեռք բերված բարելավումները: Այս հոդվածներն օգնում են ձեզ հասկանալ, թե ինչպես է աշխատում Quarkus-ը և ինչու է այն օգտակար՝ անկախ նրանից, թե դուք խոսում եք մեր օրինակներում ներկայացված պարզ helloworld ծրագրի մասին, թե շատ ավելի բարդ իրական կյանքում:

Մենք կվերադառնանք երկու շաբաթից Quarkus-ի մասին վերջնական գրառմամբ. կհանդիպենք այնտեղ:

Մեր վերջին գրառման մեջ մենք ցույց կտանք, թե ինչպես կարելի է համատեղել AMQ Online-ը և Quarkus-ը՝ ստեղծելով OpenShift-ի վրա հիմնված հաղորդագրությունների փոխանակման ժամանակակից համակարգ՝ օգտագործելով երկու նոր հաղորդագրությունների տեխնոլոգիաներ: Շարունակեք կարդալ ՈՒղեցույց.

Source: www.habr.com

Добавить комментарий