์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ โ ์ด๊ฒ์ Quarkus ์๋ฆฌ์ฆ์ ๋ค์ฏ ๋ฒ์งธ ๊ฒ์๋ฌผ์
๋๋ค! (๊ทธ๋์ ๋ ์น ์ธ๋ฏธ๋๋ฅผ ์์ฒญํด ๋ณด์ธ์.
ะ
์ฑ๋ฅ ์ธก์ ์ ๊ฑฐ์ ๋ชจ๋ ์
๊ทธ๋ ์ด๋์ ๊ธฐ๋ณธ ๊ธฐ๋ฐ์ด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ณด๊ณ ๋ ์ฑ๋ฅ ๋ถ์ ํ๋ก์ธ์ค์ ์ค์ํ ๋ถ๋ถ์
๋๋ค. ์ค๋์ Java ์ ํ๋ฆฌ์ผ์ด์
ํ๋ํ๋ฅผ ํตํด ๋ฌ์ฑํ ๊ฐ์ ์ฌํญ์ ์ ๋ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ด๋ จ ์ธก์ ๋๊ตฌ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์ธก์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ Quarkus ํํ ๋ฆฌ์ผ์ ์ฐธ์กฐํ์ธ์.
์๋์์๋ pmap ๋ฐ ps ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ Linux์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ์ธ ๊ฐ์ง ๋ค๋ฅธ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ (JBoss EAP, JAR ํจํค์ง ๋ฐ ์คํ ํ์ผ)์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ ์ด๋ณด์ค EAP
JBoss EAP ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ์คํด์ค๋ฅผ ์์ํฉ๋๋ค("helloworld ๋ฐฐํฌ" ์น์
์ฐธ์กฐ).
$ pgrep -lf jboss
7268 java
์์ต๋๋ค. โa ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฒด ๋ช ๋ น์ค์ ์ถ์ถํ ์ ์์ต๋๋ค(์: $ pgrep -af jboss).
์ด์ ps ๋ฐ pmap ๋ช ๋ น์์ PID 7268์ ์ฌ์ฉํฉ๋๋ค.
์ฌ๊ธฐ ์ด๋ ๊ฒ :
$ 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๊ฐ ์ฝ 650MB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
JAR ํจํค์ง
JAR ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํฉ๋๋ค(JAR์ ํจํค์ง๋ helloworld ์คํ ์น์
์ฐธ์กฐ).
$ 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 ํจํค์ง๊ฐ ์ฝ 130MB๋ฅผ ์๋นํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์คํ ๊ฐ๋ฅ ํ์ผ
๋ค์ดํฐ๋ธ ํ์ผ์ ์คํํฉ๋๋ค("๋ค์ดํฐ๋ธ helloworld ์คํ ํ์ผ ์คํ" ์น์
์ฐธ์กฐ).
$ ./target/helloworld-<version>-runner
PID๋ฅผ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
๊ทธ๋ฐ ๋ค์ ps ๋ฐ pmap ๋ช ๋ น์์ ๊ฒฐ๊ณผ ํ๋ก์ธ์ค ID(6948)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฌ๊ธฐ ์ด๋ ๊ฒ :
$ 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๋ฅผ ๋ณด๋ฉด ์คํ ํ์ผ์ด ์ฝ 20MB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์๋น ๋น๊ต
๋ฐ๋ผ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ์ซ์๋ฅผ ์ป์์ต๋๋ค.
- JBoss EAP - 650MB.
- JAR ํจํค์ง โ 130MB.
- ์คํ ํ์ผ โ 20MB.
๋ถ๋ช ํ ์คํ ํ์ผ์ ํจ์ฌ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํฉ๋๋ค.
4๋ฒ๊ณผ 5๋ฒ ๊ฒ์๋ฌผ์ ์์ฝํด ๋ณด๊ฒ ์ต๋๋ค.
์ด ๊ฒ์๋ฌผ๊ณผ ์ด์ ๊ฒ์๋ฌผ์์๋ Quarkus์์ ์ง์๋๋ ๊ธฐ์ (CDI ๋ฐ Servlet 3)์ ์ฌ์ฉํ์ฌ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ํํ๋ ๋ฐฉ๋ฒ๊ณผ ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ, ๊ตฌ์ถ ๋ฐ ์คํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. ์ด๋ฌํ ์ ๊ทธ๋ ์ด๋๋ฅผ ํตํด ๋ฌ์ฑํ ๊ฐ์ ์ฌํญ์ ํ๊ฐํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ์์ต๋๋ค. ์ด ๊ธฐ์ฌ๋ ์์ ์ ๊ฐ๋จํ helloworld ํ๋ก๊ทธ๋จ์ ๋ํด ์ด์ผ๊ธฐํ๋ ํจ์ฌ ๋ ๋ณต์กํ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ด์ผ๊ธฐํ๋ Quarkus์ ์๋ ๋ฐฉ์๊ณผ ์ ์ฉํ ์ด์ ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
XNUMX์ฃผ ํ์ Quarkus์ ๋ํ ๋ง์ง๋ง ๊ฒ์๋ฌผ์ ๊ฐ์ง๊ณ ๋ค์ ์ฐพ์์ค๊ฒ ์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๋ต๊ฒ ์ต๋๋ค!
๋ง์ง๋ง ๊ฒ์๋ฌผ์์๋ AMQ Online๊ณผ Quarkus๋ฅผ ๊ฒฐํฉํ์ฌ ๋ ๊ฐ์ง ์๋ก์ด ๋ฉ์์ง ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ต์ OpenShift ๊ธฐ๋ฐ ๋ฉ์์ง ์์คํ
์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฝ์ด
์ถ์ฒ : habr.com