ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ β ΡΠΎΠ²Π° Π΅ ΠΏΠ΅ΡΠ°ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΠΎΡ Π½Π°ΡΠ°ΡΠ° ΡΠ΅ΡΠΈΡ Quarkus! (ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ Π½Π°ΡΠΈΡ ΡΠ΅Π±ΠΈΠ½Π°Ρ
Π
ΠΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΠΎΡΡΠΈ Π²ΡΡΠΊΠ° Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠ°, Π° ΠΎΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ Π²Π°ΠΆΠ½Π° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. ΠΠ½Π΅Ρ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π·Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΏΠΎΡΡΠΈΠ³Π½Π°ΡΠΈ ΡΡΠ΅Π· ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π²ΠΈΠΆΡΠ΅ ΡΡΠΎΠΊΠ° Π½Π° Quarkus, ΠΎΠ·Π°Π³Π»Π°Π²Π΅Π½
ΠΠΎ-Π΄ΠΎΠ»Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ°Π²Π½ΡΠ²Π°ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π·Π° ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠΏΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (JBoss EAP, JAR ΠΏΠ°ΠΊΠ΅Ρ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ»), ΠΊΠ°ΡΠΎ ΡΡΠ±ΠΈΡΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅ Π² Linux Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ pmap ΠΈ ps.
JBoss EAP
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π΅ΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ JBoss EAP (Π²ΠΈΠΆΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° βΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° helloworldβ Π²
$ 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 MB ΠΏΠ°ΠΌΠ΅Ρ.
JAR ΠΏΠ°ΠΊΠ΅Ρ
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ JAR (Π²ΠΈΠΆΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° βΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ helloworld, ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½ Π² JARβ Π²
$ java -jar ./target/helloworld-<version>-runner.jar
ΠΡΠ½ΠΎΠ²ΠΎ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ PID Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° pgrep (ΡΠΎΠ·ΠΈ ΠΏΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠΏΡΠΈΡΡΠ° -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 MB.
ΠΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ»
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΈΠ²Π½ΠΈΡ (Π²ΠΈΠΆΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° βΠ‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΠΈΠ²Π½ΠΈΡ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ» Π½Π° helloworldβ Π²
$ ./target/helloworld-<version>-runner
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π΅Π³ΠΎΠ²ΠΈΡ PID ΠΎΡΠ½ΠΎΠ²ΠΎ:
$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ID Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° (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 MB ΠΏΠ°ΠΌΠ΅Ρ.
Π‘ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ
Π ΡΠ°ΠΊΠ°, ΠΏΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΠΈΡΠ»Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°:
- JBoss EAP - 650 MB.
- JAR ΠΏΠ°ΠΊΠ΅Ρ β 130 MB.
- ΠΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΡΠ°ΠΉΠ» β 20 MB.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡΡ ΡΠ°ΠΉΠ» Π·Π°Π΅ΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΠ°ΠΌΠ΅Ρ.
ΠΠ΅ΠΊΠ° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ 4 ΠΈ 5
Π ΡΠ°Π·ΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Java ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π² Quarkus (CDI ΠΈ Servlet 3), ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅, ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΊΠ°Π·Π°Ρ ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π·Π° Π΄Π° ΠΎΡΠ΅Π½ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡΡΠ°, ΠΏΠΎΡΡΠΈΠ³Π½Π°ΡΠΈ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π°Π΄Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅. Π’Π΅Π·ΠΈ ΡΡΠ°ΡΠΈΠΈ Π²ΠΈ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Quarkus ΠΈ Π·Π°ΡΠΎ Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ - Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΡΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° helloworld Π² Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ΅Π°Π»Π½ΠΈΡ ΠΆΠΈΠ²ΠΎΡ.
Π©Π΅ ΡΠ΅ Π²ΡΡΠ½Π΅ΠΌ ΡΠ»Π΅Π΄ Π΄Π²Π΅ ΡΠ΅Π΄ΠΌΠΈΡΠΈ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π·Π° Quarkus - ΡΠ΅ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ°ΠΌ!
Π Π½Π°ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ AMQ Online ΠΈ Quarkus, Π·Π° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΠΌΠΎΠ΄Π΅ΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° OpenShift, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π΄Π²Π΅ Π½ΠΎΠ²ΠΈ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com