Quarkus: مدرن کردن برنامه ها با استفاده از Helloworld به عنوان مثال از JBoss EAP Quickstart (ادامه)

سلام به همه - این پنجمین پست از سری Quarkus ما است! (به هر حال، وبینار ما را تماشا کنید "این چارچوب جاوا کوارکوس - Kubernetes بومی است". ما به شما نشان خواهیم داد که چگونه از صفر شروع کنید یا راه حل های آماده را انتقال دهید)

Quarkus: مدرن کردن برنامه ها با استفاده از Helloworld به عنوان مثال از JBoss EAP Quickstart (ادامه)

В پست قبلی ما به نوسازی برنامه های جاوا با استفاده از فناوری های پشتیبانی شده از کوارکوس (CDI و Servlet 3) با استفاده از برنامه helloworld از مخزن به عنوان مثال نگاه کردیم. رد هت JBoss Enterprise Application Platform (JBoss EAP) Quickstart. امروز به ادامه مبحث مدرنیزاسیون می پردازیم و به بحث مصرف حافظه می پردازیم.

اندازه گیری عملکرد اساس اساسی تقریباً هر ارتقاء است و گزارش استفاده از حافظه بخش مهمی از فرآیند تحلیل عملکرد است. امروز ما به ابزارهای اندازه گیری مربوطه نگاه خواهیم کرد که می توانند برای تعیین کمیت پیشرفت های به دست آمده توسط مدرن سازی برنامه های جاوا مورد استفاده قرار گیرند.

برای اطلاعات بیشتر در مورد اندازه گیری میزان مصرف حافظه، به آموزش کوارکوس با عنوان مراجعه کنید اندازه گیری عملکرد - چگونه میزان استفاده از حافظه را اندازه گیری کنیم؟

در زیر به سادگی به شما نشان خواهیم داد که چگونه داده های استفاده از حافظه را برای سه نوع مختلف برنامه (JBoss EAP، بسته JAR و قابل اجرا) با جمع آوری داده ها در لینوکس با استفاده از ابزارهای pmap و ps مقایسه کنید.

JBoss EAP

ما یک نمونه از برنامه JBoss EAP را راه اندازی می کنیم (به بخش "استقرار helloworld" در پست قبلی) و سپس با استفاده از دستور زیر PID فرآیند آن را جستجو کنید (در مثال ما 7268 است):

$ pgrep -lf jboss
7268 java

توجه داشته باشید. گزینه –a به شما امکان می دهد خط فرمان کامل را استخراج کنید (یعنی $ pgrep -af jboss).

اکنون از PID 7268 در دستورات ps و pmap استفاده می کنیم.

در اینجا چنین است:

$ 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

و مانند این:

$ 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 نگاه می کنیم و می بینیم که JBoss EAP تقریباً 650 مگابایت حافظه مصرف می کند.

بسته JAR

ما برنامه JAR را راه اندازی می کنیم (به بخش "اجرای helloworld بسته بندی شده در JAR" مراجعه کنید پست قبلی):

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

ما دوباره با استفاده از دستور pgrep به PID نگاه می کنیم (این بار از گزینه -a که در بالا توضیح داده شد استفاده می کنیم):

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

ما ps و pmap را برای اندازه گیری میزان مصرف حافظه اجرا می کنیم، اما اکنون برای پردازش 6408.

در اینجا چنین است:

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

و مانند این:

$ 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

ما دوباره به RSS نگاه می کنیم و می بینیم که بسته JAR تقریباً 130 مگابایت مصرف می کند.

فایل اجرایی

ما نسخه بومی را راه اندازی می کنیم (به بخش «اجرای فایل اجرایی helloworld بومی» مراجعه کنید پست قبلی):

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

بیایید دوباره به PID آن نگاه کنیم:

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

و سپس از شناسه فرآیند حاصل (6948) در دستورات ps و pmap استفاده می کنیم.

در اینجا چنین است:

$ 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 نگاه می کنیم و می بینیم که فایل اجرایی حدود 20 مگابایت حافظه را اشغال می کند.

مقایسه مصرف حافظه

بنابراین، ما اعداد زیر را برای استفاده از حافظه به دست آوردیم:

  • JBoss EAP - 650 مگابایت.
  • بسته JAR – 130 مگابایت.
  • فایل اجرایی – 20 مگابایت.

بدیهی است که فایل اجرایی حافظه بسیار کمتری را اشغال می کند.

بیایید پست های 4 و 5 را خلاصه کنیم

در این پست و پست های قبلی، به مدرن سازی برنامه های جاوا با استفاده از فناوری های پشتیبانی شده در کوارکوس (CDI و Servlet 3) و همچنین راه های مختلف برای توسعه، ساخت و اجرای چنین برنامه هایی پرداختیم. ما نشان دادیم که چگونه داده‌های استفاده از حافظه را برای ارزیابی پیشرفت‌های به‌دست‌آمده از چنین ارتقایی جمع‌آوری کنیم. این مقاله‌ها به شما کمک می‌کنند بفهمید کوارکوس چگونه کار می‌کند و چرا مفید است - چه در مورد برنامه ساده helloworld در مثال‌های ما صحبت کنید یا برنامه‌های بسیار پیچیده‌تر در زندگی واقعی.

ما تا دو هفته دیگر با آخرین پست درباره کوارکوس باز خواهیم گشت - شما را آنجا می بینیم!

در آخرین پست خود، نحوه ترکیب AMQ Online و Quarkus را برای ساختن یک سیستم پیام رسانی مبتنی بر OpenShift مدرن با استفاده از دو فناوری پیام رسانی جدید نشان خواهیم داد. ادامه مطلب پیوند.

منبع: www.habr.com

اضافه کردن نظر