Quarkus: peningkatan aplikasi menggunakan contoh helloworld dari JBoss EAP Quickstart (lanjutan)

Halo semuanya - ini adalah posting kelima dari seri kami tentang Quarkus! (Ngomong-ngomong, daftarkan dan buka webinar kami " Ini adalah Quarkus - kerangka kerja asli Jawa Kubernetes ", yang akan diadakan pada 27 Mei. Kami akan menunjukkan cara memulai dari awal atau mentransfer solusi yang sudah jadi)



Dalam posting sebelumnya, kami memeriksa modernisasi aplikasi Java menggunakan Quarkus yang didukung teknologi (CDI dan Servlet 3) menggunakan program helloworld dari repositori Quickstart JBoss Enterprise Application Platform (JBoss EAP) . Hari ini kita akan melanjutkan topik modernisasi dan membahas masalah konsumsi memori.

Pengukuran kinerja adalah fondasi dasar dari hampir semua peningkatan, dan laporan penggunaan memori adalah bagian penting dari proses analisis kinerja. Hari ini kita akan melihat alat ukur yang relevan dengan mana Anda dapat mengukur peningkatan yang dilakukan sebagai akibat dari modernisasi aplikasi Java.

Untuk informasi lebih lanjut tentang mengukur penggunaan memori, lihat manual Quarkus berjudul Mengukur Kinerja - Bagaimana kita mengukur penggunaan memori?

Dan di bawah ini kami hanya menunjukkan bagaimana membandingkan data penggunaan memori dengan tiga jenis aplikasi (JBoss EAP, paket JAR dan yang dapat dieksekusi), mengumpulkan data ini di Linux menggunakan utilitas pmap dan ps.

Jboss eap


Kami meluncurkan instance aplikasi JBoss EAP (lihat bagian "Menyebarkan helloworld" di posting sebelumnya ) dan kemudian melihat pengenal proses PID-nya (dalam contoh kami, 7268) dengan perintah berikut:

$ pgrep -lf jboss
7268 java

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

Sekarang gunakan PID 7268 dalam perintah ps dan pmap.

Seperti ini:

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

Paket jar


Luncurkan aplikasi JAR (lihat bagian “Luncurkan helloworld yang dikemas dalam JAR” di pos sebelumnya ):

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

Sekali lagi kita melihat PID menggunakan perintah pgrep (kali ini menggunakan opsi -a yang dijelaskan di atas):

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

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

ini:

$ 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

Sekali lagi, lihat RSS dan lihat bahwa paket JAR mengkonsumsi sekitar 130 MB.

File yang dapat dieksekusi


Luncurkan yang asli (lihat bagian "Luncurkan file yang dapat dieksekusi asli helloworld" di posting sebelumnya ):

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

Sekali lagi, lihat PID-nya:

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

Dan kemudian gunakan pengidentifikasi proses yang dihasilkan (6948) dalam perintah ps dan pmap.

Seperti ini:

$ 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 menempati sekitar 20 MB memori.

Bandingkan konsumsi memori


Jadi, kami mendapat angka-angka berikut tentang penggunaan memori:

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

Jelas, executable membutuhkan lebih sedikit memori.

Ringkas 4 dan 5 pos


Dalam posting ini dan sebelumnya, kami memeriksa masalah memodernisasi aplikasi Java menggunakan teknologi yang didukung oleh Quarkus (CDI dan Servlet 3), serta berbagai cara untuk mengembangkan, membangun dan menjalankan aplikasi tersebut. Kami menunjukkan cara mengumpulkan data tentang penggunaan memori untuk mengevaluasi peningkatan yang dilakukan sebagai hasil dari peningkatan tersebut. Artikel-artikel ini membantu Anda memahami cara kerja Quarkus dan apa manfaatnya - terlepas dari apakah kita berbicara tentang program helloworld paling sederhana dari contoh kami atau tentang aplikasi yang jauh lebih kompleks dari kehidupan nyata.

Kami akan kembali dalam dua minggu dengan posting terakhir tentang Quarkus - sampai jumpa lagi!

All Articles