Quarkus: Memodenkan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart (bersambung)

Hello semua - ini adalah siaran kelima dalam siri Quarkus kami! (By the way, tonton webinar kami “Ini ialah rangka kerja Java asli Quarkus – Kubernetes”. Kami akan menunjukkan kepada anda cara untuk bermula dari awal atau memindahkan penyelesaian siap)

Quarkus: Memodenkan Aplikasi Menggunakan Helloworld sebagai Contoh daripada JBoss EAP Quickstart (bersambung)

В jawatan sebelum ini kami melihat memodenkan aplikasi Java menggunakan teknologi yang disokong Quarkus (CDI dan Servlet 3) menggunakan program helloworld dari repositori sebagai contoh Platform Aplikasi Perusahaan Red Hat JBoss (JBoss EAP) Mula Pantas. Hari ini kita akan meneruskan topik pemodenan dan membincangkan isu penggunaan memori.

Pengukuran prestasi ialah asas asas bagi hampir semua peningkatan, dan pelaporan penggunaan memori merupakan bahagian penting dalam proses analisis prestasi. Hari ini kita akan melihat alat ukuran yang berkaitan yang boleh digunakan untuk mengukur peningkatan yang dicapai dengan memodenkan aplikasi Java.

Untuk maklumat lanjut tentang mengukur penggunaan memori, lihat tutorial Quarkus bertajuk Mengukur Prestasi—Bagaimanakah kita mengukur penggunaan memori?

Di bawah ini kami hanya akan menunjukkan kepada anda cara membandingkan data penggunaan memori untuk tiga jenis aplikasi yang berbeza (JBoss EAP, pakej JAR dan boleh laku) dengan mengumpul data pada Linux menggunakan utiliti pmap dan ps.

JBoss EAP

Kami melancarkan contoh aplikasi JBoss EAP (lihat bahagian "Menggunakan helloworld" dalam jawatan sebelum ini) dan kemudian cari PID prosesnya (dalam contoh kami ialah 7268) menggunakan arahan berikut:

$ pgrep -lf jboss
7268 java

Perhatian. Pilihan –a membolehkan anda mengekstrak baris arahan lengkap (iaitu: $ pgrep -af jboss).

Sekarang kita menggunakan PID 7268 dalam arahan ps dan pmap.

Di sini:

$ 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

Dan seperti ini:

$ 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

Kami melihat nilai RSS dan melihat bahawa JBoss EAP menggunakan lebih kurang 650 MB memori.

Pakej JAR

Kami melancarkan aplikasi JAR (lihat bahagian "Jalankan helloworld yang dibungkus dalam JAR" dalam jawatan sebelum ini):

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

Kami melihat PID sekali lagi menggunakan perintah pgrep (kali ini kami menggunakan pilihan -a yang diterangkan di atas):

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

Kami menjalankan ps dan pmap untuk mengukur penggunaan memori, tetapi sekarang untuk proses 6408.

Di sini:

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

Dan seperti ini:

$ 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

Kami melihat RSS sekali lagi dan melihat bahawa pakej JAR menggunakan kira-kira 130 MB.

Fail boleh laku

Kami melancarkan fail asli (lihat bahagian "Menjalankan fail boleh laku helloworld asli" dalam jawatan sebelum ini):

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

Mari lihat PIDnya sekali lagi:

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

Dan kemudian kami menggunakan ID proses yang terhasil (6948) dalam arahan ps dan pmap.

Di sini:

$ 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

Kami melihat RSS dan melihat bahawa fail boleh laku mengambil kira-kira 20 MB memori.

Membandingkan penggunaan memori

Jadi, kami mendapat nombor berikut untuk penggunaan memori:

  • JBoss EAP - 650 MB.
  • Pakej JAR – 130 MB.
  • Fail boleh laku – 20 MB.

Jelas sekali, fail boleh laku mengambil lebih sedikit memori.

Mari kita ringkaskan post 4 dan 5

Dalam catatan ini dan sebelum ini, kami melihat memodenkan aplikasi Java menggunakan teknologi yang disokong dalam Quarkus (CDI dan Servlet 3), serta pelbagai cara untuk membangun, membina dan menjalankan aplikasi sedemikian. Kami menunjukkan cara untuk mengumpul data penggunaan memori untuk menilai peningkatan yang dicapai oleh peningkatan sedemikian. Artikel ini membantu anda memahami cara Quarkus berfungsi dan sebab ia berguna—sama ada anda bercakap tentang program helloworld mudah dalam contoh kami atau aplikasi kehidupan sebenar yang lebih kompleks.

Kami akan kembali dalam dua minggu dengan catatan terakhir tentang Quarkus - jumpa anda di sana!

Dalam catatan terakhir kami, kami akan menunjukkan cara menggabungkan AMQ Online dan Quarkus untuk membina sistem pemesejan berasaskan OpenShift moden menggunakan dua teknologi pemesejan baharu. Teruskan membaca pautan.

Sumber: www.habr.com

Tambah komen