Quarkus: Modernisasi Aplikasi Menggunakan Helloworld sebagai Contoh dari Quickstart JBoss EAP (lanjutan)

Halo semuanya – ini adalah postingan kelima dalam seri Quarkus kami! (Omong-omong, tonton webinar kami “Ini adalah Quarkus – kerangka Java asli Kubernetes”. Kami akan menunjukkan cara memulai dari awal atau mentransfer solusi yang sudah jadi)

Quarkus: Modernisasi Aplikasi Menggunakan Helloworld sebagai Contoh dari Quickstart JBoss EAP (lanjutan)

В posting sebelumnya kami melihat modernisasi aplikasi Java menggunakan teknologi yang didukung Quarkus (CDI dan Servlet 3) menggunakan program helloworld dari repositori sebagai contoh Panduan Memulai Platform Aplikasi Red Hat JBoss Enterprise (JBoss EAP).. Hari ini kita akan melanjutkan topik modernisasi dan membahas masalah konsumsi memori.

Pengukuran kinerja adalah dasar fundamental dari hampir semua peningkatan, dan pelaporan penggunaan memori merupakan bagian penting dari proses analisis kinerja. Hari ini kita akan melihat alat pengukuran relevan yang dapat digunakan untuk mengukur peningkatan yang dicapai dengan memodernisasi aplikasi Java.

Untuk informasi lebih lanjut tentang mengukur penggunaan memori, lihat tutorial Quarkus yang berjudul Mengukur Kinerja—Bagaimana kita mengukur penggunaan memori?

Di bawah ini kami hanya akan menunjukkan kepada Anda cara membandingkan data penggunaan memori untuk tiga jenis aplikasi berbeda (JBoss EAP, paket JAR, dan executable) dengan mengumpulkan data di Linux menggunakan utilitas pmap dan ps.

JBoss EAP

Kami meluncurkan sebuah instance dari aplikasi JBoss EAP (lihat bagian “Menyebarkan helloworld” di posting sebelumnya) lalu cari PID prosesnya (dalam contoh kita adalah 7268) menggunakan perintah berikut:

$ pgrep -lf jboss
7268 java

Catatan. Opsi –a memungkinkan Anda mengekstrak baris perintah lengkap (yaitu: $ pgrep -af jboss).

Sekarang kita menggunakan PID 7268 pada perintah ps dan pmap.

Disini jadi:

$ 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

Jadi:

$ 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 bahwa JBoss EAP mengkonsumsi sekitar 650 MB memori.

paket JAR

Kami meluncurkan aplikasi JAR (lihat bagian “Jalankan helloworld yang dikemas dalam JAR” di posting sebelumnya):

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

Kami melihat PID lagi menggunakan perintah pgrep (kali ini kami menggunakan opsi -a yang dijelaskan 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.

Disini jadi:

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

Jadi:

$ 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 lagi dan melihat bahwa paket JAR mengkonsumsi sekitar 130 MB.

File yang dapat dieksekusi

Kami meluncurkan yang asli (lihat bagian "Menjalankan file executable helloworld asli" di posting sebelumnya):

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

Mari kita lihat kembali PID-nya:

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

Dan kemudian kita menggunakan ID proses yang dihasilkan (6948) dalam perintah ps dan pmap.

Disini jadi:

$ 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 bahwa file yang dapat dieksekusi memakan sekitar 20 MB memori.

Membandingkan konsumsi memori

Jadi, kami mendapat nomor berikut untuk penggunaan memori:

  • JBoss EAP - 650MB.
  • Paket JAR – 130 MB.
  • File yang dapat dieksekusi – 20 MB.

Jelas, file yang dapat dieksekusi memakan lebih sedikit memori.

Mari kita rangkum postingan 4 dan 5

Dalam postingan ini dan postingan sebelumnya, kita melihat modernisasi aplikasi Java menggunakan teknologi yang didukung di Quarkus (CDI dan Servlet 3), serta berbagai cara untuk mengembangkan, membangun, dan menjalankan aplikasi tersebut. Kami menunjukkan cara mengumpulkan data penggunaan memori untuk mengevaluasi peningkatan yang dicapai oleh peningkatan tersebut. Artikel-artikel ini membantu Anda memahami cara kerja Quarkus dan mengapa hal ini berguna—apakah Anda berbicara tentang program helloworld sederhana dalam contoh kami atau aplikasi kehidupan nyata yang jauh lebih kompleks.

Kami akan kembali dalam dua minggu dengan postingan terakhir tentang Quarkus - sampai jumpa di sana!

Dalam postingan terakhir kami, kami akan menunjukkan cara menggabungkan AMQ Online dan Quarkus untuk membangun sistem perpesanan modern berbasis OpenShift menggunakan dua teknologi perpesanan baru. Baca terus link.

Sumber: www.habr.com

Tambah komentar