Hammaga salom - bu bizning Quarkus seriyamizdagi beshinchi post! (Aytgancha, bizning vebinarimizni tomosha qiling . Biz sizga noldan qanday boshlashni yoki tayyor echimlarni uzatishni ko'rsatamiz)

В Biz misol sifatida ombordagi helloworld dasturidan foydalangan holda Quarkus tomonidan qo'llab-quvvatlanadigan texnologiyalar (CDI va Servlet 3) yordamida Java ilovalarini modernizatsiya qilishni ko'rib chiqdik. . Bugun biz modernizatsiya mavzusini davom ettiramiz va xotira iste'moli masalasini muhokama qilamiz.
Ishlash samaradorligini o'lchash deyarli har qanday yangilanishning asosiy asosidir va xotiradan foydalanish hisoboti ishlash tahlili jarayonining muhim qismidir. Bugun biz Java ilovalarini modernizatsiya qilish orqali erishilgan yaxshilanishlarni aniqlash uchun ishlatilishi mumkin bo'lgan tegishli o'lchov vositalarini ko'rib chiqamiz.
Xotiradan foydalanishni o'lchash bo'yicha qo'shimcha ma'lumot olish uchun Quarkus qo'llanmasiga qarang
Quyida biz ushbu ma'lumotlarni to'plash orqali uch xil turdagi ilovalar (JBoss EAP, JAR paketi va bajariladigan fayl) uchun xotiradan foydalanish ma'lumotlarini qanday taqqoslashni ko'rsatamiz. Linux pmap va ps yordamchi dasturlaridan foydalanish.
JBoss EAP
Biz JBoss EAP ilovasining namunasini ishga tushiramiz ("Halloworldni joylashtirish" bo'limiga qarang. ) va keyin quyidagi buyruq yordamida uning jarayoni PID (bizning misolimizda u 7268) ni qidiring:
$ pgrep -lf jboss
7268 java
Eslatma. –a opsiyasi to‘liq buyruq qatorini chiqarish imkonini beradi (ya’ni: $ pgrep -af jboss).
Endi biz ps va pmap buyruqlarida PID 7268 dan foydalanamiz.
Mana bunday:
$ 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
Va shunga o'xshash:
$ 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
Biz RSS qiymatiga qaraymiz va JBoss EAP taxminan 650 MB xotirani iste'mol qilishini ko'ramiz.
JAR to'plami
Biz JAR ilovasini ishga tushiramiz ("JAR-da paketlangan helloworldni ishga tushirish" bo'limiga qarang ):
$ java -jar ./target/helloworld-<version>-runner.jar
Biz pgrep buyrug'i yordamida yana PID-ni ko'rib chiqamiz (bu safar biz yuqorida tavsiflangan -a opsiyasidan foydalanamiz):
$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar
Biz xotiradan foydalanishni o'lchash uchun ps va pmap-ni ishga tushiramiz, ammo endi 6408-jarayon uchun.
Mana bunday:
$ ps -o pid,rss,command -p 6408
PID RSS COMMAND
6408 125732 java -jar ./target/helloworld-quarkus-runner.jar
Va shunga o'xshash:
$ 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
Biz yana RSS-ga qaraymiz va JAR to'plami taxminan 130 MB iste'mol qilishini ko'ramiz.
Bajariladigan fayl
Biz mahalliy faylni ishga tushiramiz ("Mahalliy helloworld bajariladigan faylni ishga tushirish" bo'limiga qarang. ):
$ ./target/helloworld-<version>-runner
Keling, uning PID ga yana qaraylik:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Va keyin biz ps va pmap buyruqlarida olingan jarayon ID (6948) dan foydalanamiz.
Mana bunday:
$ 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
Biz RSS-ga qaraymiz va bajariladigan fayl taxminan 20 MB xotirani egallashini ko'ramiz.
Xotira sarfini solishtirish
Shunday qilib, biz xotiradan foydalanish uchun quyidagi raqamlarni oldik:
- JBoss EAP - 650 MB.
- JAR to'plami - 130 MB.
- Bajariladigan fayl - 20 MB.
Shubhasiz, bajariladigan fayl kamroq xotirani egallaydi.
Keling, 4 va 5-xabarlarni umumlashtiramiz
Ushbu va oldingi postlarda biz Quarkus (CDI va Servlet 3) da qo'llab-quvvatlanadigan texnologiyalardan foydalangan holda Java ilovalarini modernizatsiya qilish, shuningdek, bunday ilovalarni ishlab chiqish, yaratish va ishga tushirishning turli usullarini ko'rib chiqdik. Biz bunday yangilanish orqali erishilgan yaxshilanishlarni baholash uchun xotiradan foydalanish ma'lumotlarini qanday yig'ishni ko'rsatdik. Ushbu maqolalar sizga Quarkus qanday ishlashini va u nima uchun foydali ekanligini tushunishga yordam beradi — misollarimizdagi oddiy helloworld dasturi yoki real hayotdagi ancha murakkab ilovalar haqida gapiryapsizmi.
Ikki haftadan so‘ng Kvarkus haqidagi so‘nggi post bilan qaytamiz – ko‘rishguncha!
Yakuniy postimizda biz ikkita yangi xabar almashish texnologiyasidan foydalangan holda zamonaviy OpenShift-ga asoslangan xabar almashish tizimini yaratish uchun AMQ Online va Quarkus-ni qanday birlashtirishni ko'rsatamiz. Davom eting .
Manba: www.habr.com
