Quarkus: JBoss EAP Quickstart-dan Nümunə kimi Helloworld istifadə edərək tətbiqlərin modernləşdirilməsi (davamı var)

Hər kəsə salam – bu Quarkus seriyamızdakı beşinci yazıdır! (Yeri gəlmişkən, vebinarımızı izləyin "Bu Quarkus - Kubernetes yerli Java çərçivəsidir". Biz sizə sıfırdan necə başlayacağınızı və ya hazır həlləri necə köçürəcəyinizi göstərəcəyik)

Quarkus: JBoss EAP Quickstart-dan Nümunə kimi Helloworld istifadə edərək tətbiqlərin modernləşdirilməsi (davamı var)

В əvvəlki yazı Nümunə olaraq depodan helloworld proqramını istifadə edərək Quarkus tərəfindən dəstəklənən texnologiyalardan (CDI və Servlet 3) istifadə edərək Java proqramlarının modernləşdirilməsinə baxdıq. Red Hat JBoss Enterprise Application Platform (JBoss EAP) Quickstart. Bu gün biz modernləşmə mövzusunu davam etdirəcəyik və yaddaş istehlakı məsələsini müzakirə edəcəyik.

Performansın ölçülməsi demək olar ki, hər hansı bir təkmilləşdirmənin əsas əsasını təşkil edir və yaddaşdan istifadə hesabatı performans təhlili prosesinin vacib hissəsidir. Bu gün biz Java proqramlarının modernləşdirilməsi ilə əldə edilən təkmilləşdirmələrin kəmiyyətini qiymətləndirmək üçün istifadə edilə bilən müvafiq ölçmə alətlərinə baxacağıq.

Yaddaşdan istifadənin ölçülməsinə dair əlavə məlumat üçün Quarkus adlı təlimata baxın Performansın ölçülməsi - Yaddaş istifadəsini necə ölçə bilərik?

Aşağıda biz sizə pmap və ps utilitlərindən istifadə edərək Linux-da məlumat toplamaqla üç müxtəlif proqram növü (JBoss EAP, JAR paketi və icra olunan) üçün yaddaş istifadəsi məlumatlarını necə müqayisə edəcəyinizi göstərəcəyik.

JBoss EAP

Biz JBoss EAP tətbiqinin nümunəsini işə salırıq (bax: "Halloworld-un yerləşdirilməsi" əvvəlki yazı) və sonra aşağıdakı əmrdən istifadə edərək proses PID-ni (bizim nümunəmizdə 7268-dir) axtarın:

$ pgrep -lf jboss
7268 java

Qeyd edək. –a seçimi tam komanda xəttini çıxarmağa imkan verir (yəni: $ pgrep -af jboss).

İndi biz ps və pmap əmrlərində PID 7268-dən istifadə edirik.

Burada belədir:

$ 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

Və bu kimi:

$ 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 dəyərinə baxırıq və JBoss EAP-nin təxminən 650 MB yaddaş istehlak etdiyini görürük.

JAR paketi

JAR tətbiqini işə salırıq ("JAR-da paketlənmiş helloworld-u işə salın" bölməsinə baxın əvvəlki yazı):

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

Pgrep əmrindən istifadə edərək yenidən PID-ə baxırıq (bu dəfə yuxarıda təsvir edilən -a seçimindən istifadə edirik):

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

Yaddaş istifadəsini ölçmək üçün ps və pmap istifadə edirik, lakin indi proses 6408 üçün.

Burada belədir:

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

Və bu kimi:

$ 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

Yenidən RSS-ə baxırıq və JAR paketinin təxminən 130 MB istehlak etdiyini görürük.

İcra edilə bilən fayl

Doğma faylı işə salırıq ("Doğma helloworld icra edilə bilən faylı işə salmaq" bölməsinə baxın. əvvəlki yazı):

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

Onun PID-inə yenidən baxaq:

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

Və sonra ps və pmap əmrlərində əldə edilən proses identifikatorundan (6948) istifadə edirik.

Burada belədir:

$ 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-ə baxırıq və icra olunan faylın təxminən 20 MB yaddaş tutduğunu görürük.

Yaddaş istehlakının müqayisəsi

Beləliklə, yaddaş istifadəsi üçün aşağıdakı nömrələri əldə etdik:

  • JBoss EAP - 650 MB.
  • JAR paketi – 130 MB.
  • İcra edilə bilən fayl - 20 MB.

Aydındır ki, icra olunan fayl daha az yaddaş tutur.

4 və 5-ci yazıları ümumiləşdirək

Bu və əvvəlki yazılarda biz Quarkus-da dəstəklənən texnologiyalardan (CDI və Servlet 3) istifadə etməklə Java proqramlarının modernləşdirilməsinə, həmçinin bu cür proqramların işlənib hazırlanması, qurulması və işə salınmasının müxtəlif yollarına baxdıq. Belə bir təkmilləşdirmə ilə əldə edilən təkmilləşdirmələri qiymətləndirmək üçün yaddaş istifadəsi məlumatlarını necə toplamaq lazım olduğunu göstərdik. Bu məqalələr sizə Quarkusun necə işlədiyini və nə üçün faydalı olduğunu başa düşməyə kömək edir – istər nümunələrimizdəki sadə helloworld proqramından, istərsə də daha mürəkkəb real həyat proqramlarından danışırsınız.

İki həftədən sonra Quarkus haqqında son yazı ilə qayıdacayıq - orada görüşənədək!

Son yazımızda iki yeni mesajlaşma texnologiyasından istifadə edərək müasir OpenShift əsaslı mesajlaşma sistemi qurmaq üçün AMQ Online və Quarkus-u necə birləşdirəcəyimizi göstərəcəyik. Oxuyun əlaqə.

Mənbə: www.habr.com

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