Π’ΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΈΡ Spring Boot (MVC ΠΈΠ»ΠΈ WebFlux) Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΌΠ΅Π½Π΅Π΅ 512 ΠΠ ΠΈ ΡΡΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 1 ΠΠ Π² Cloud Foundry, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π»ΠΎΠΆΠ½ΠΎΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ Spring ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅Π½Π΅Π΅ 1 ΠΠ.
ΠΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ @dsyer , ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Boot ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½Π°Π΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Spring Framework ΠΈ Spring Boot, ΡΡΠΎΠ±Ρ
Π― ΠΏΠΎΠ΄Π½ΡΠ» https://github.com/cloudfoundry/java-buildpack-memory-calculator/issues/24 ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ: Π΅ΡΠ»ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Π²ΡΠ΅Ρ
ΡΠ°ΠΉΠ»ΠΎΠ² .class
Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Spring, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π»ΠΊΠΎΠΉ Π³ΡΠ°Π½ΡΠ»ΡΡΠ½ΠΎΡΡΠΈ JAR ΠΈ Π±ΡΠ΄ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π² Spring JAR.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½Π° Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ Π² Spring Boot 2.1, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π΄Π»Ρ Spring Boot 2.2.
ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π·Π½Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Xmx
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½Π΅Π΅ 512 ΠΠ, Π½Π°ΡΡΡΠΎΠΈΠ² ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ (Π²Π΅ΡΠ΅Π½Π½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° + webflux).
applications:
- name: myapp
path: target/myapp-0.0.1-SNAPSHOT.jar
memory: 256m
env:
JAVA_OPTS: '-XX:ReservedCodeCacheSize=32M -XX:MaxDirectMemorySize=32M'
JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {stack_threads: 30}, jre: {version: 11.+}]'
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ vanilla webflux Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΠ .
Π― Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π·Π°Π±ΠΎΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΊΡΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ OOME (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Metaspace), Π½ΠΎ Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΅Π³ΠΎ ΡΠ»ΡΡΡΠΈΡΡ.
Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (300?) Π ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π»Ρ webflux.
ΠΠ»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² README Π±ΡΠ»ΠΈ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ.
@making Π― ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΡΠΎΠ³ΠΎ Π²ΡΠΏΡΡΠΊΠ°, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½Π΅ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»Ρ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅) Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ 256 ΠΠ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ Π΄Π°Π»Π΅ΠΊΠΎΠΉ ΠΎΡ ΡΠΎΡΠ½ΠΎΠΉ, ΠΈ Ρ Π±Ρ Ρ ΠΎΡΠ΅Π», ΡΡΠΎΠ±Ρ ΠΌΡ Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ»ΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ WebFlux, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ, ΠΏΠ°ΠΊΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ MVC ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Reactive WebClient
, Π½ΠΎ Ρ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΌΠ½ΠΎΠ΅ ΠΈ ΡΠΎΡΠ½ΠΎΠ΅.
ΠΠ°ΡΠ° Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ Π² ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ Π² https://github.com/cloudfoundry/java-buildpack-memory-calculator/issues/24 , Π΅ΡΠ»ΠΈ Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°ΠΆΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ² (ΠΎΡ 8000 Π΄ΠΎ 10000), ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ
Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ -XX:ReservedCodeCacheSize=240M
, Π³Π΄Π΅ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ -XX:ReservedCodeCacheSize=32M
. ΠΡΠ° ΡΠ°Π·Π½ΠΈΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ³ΡΠΎΠΌΠ½Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅?
Π’Π°ΠΊΠΆΠ΅ 8000 ΠΈΠ»ΠΈ 10000 - ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π·Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠΎ ΠΈΠ· ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ + Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Ρ ΡΠΊΠ»ΠΎΠ½Π΅Π½ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ (ΠΌΠ½Π΅ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ±ΠΎΡΠΊΠΈ) ΠΈΠ·-Π·Π° ΠΏΡΠΈΡΠΎΠ΄Ρ Spring Framework JAR.
ΠΠ½Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π»ΠΈ ΠΌΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° , ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
Java 8 ΠΈ Java 11. ΠΠ½ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π΄Π»Ρ Docker, Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·Ρ ΠΈ Π² Cloud Foundry. ΠΠ½Π°Π΅Ρ Π»ΠΈ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Java, ΡΡΠΎ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ CF Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Docker? ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ°ΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ, ΠΊΠ°ΠΊ -XX:InitialRAMPercentage
, -XX:MaxRAMPercentage
ΠΈΠ»ΠΈ -XX:MinRAMPercentage
?
ΠΡΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° @sdeleuze. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΠΈ ΠΏΠ°ΠΊΠ΅Ρ java-buildpack Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ java, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Π²ΠΎΡΠ»ΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΡ java, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² CF? ΠΠ»ΠΈ java-buildpack ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΠΏΡΡ, Π½ΠΎ Π·Π°ΡΠ΅ΠΌ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΊΠ°ΡΡ ΠΎΡΠ²Π΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π° Π½Π΅ Π² CF?
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΏΠ°ΠΊΠ΅Ρ java-buildpack ΡΠ΅ΡΠΈΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ java ΠΈ tomcat, ΠΏΠΎΠ»Π°Π³Π°ΡΡΡ Π½Π° ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ½Π΅ Π»ΠΈΡΠ½ΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½ΡΠ°Π²ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ java ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, Π½Π΅ ΠΎΡΠ΅Π½Ρ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ / ΡΠ²Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²ΡΡ
ΡΠ²ΠΎΠΉΡΡΠ², ΡΠΎ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΠ²ΠΎΠΉΡΡΠ²Π° RAMPercentage
Π·Π°ΠΊΠ»ΡΡΠ°ΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΡΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡΠΎΡΠ΅Π½ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΈΠΊΠ°ΠΊΠΈΡ
ΠΌΡΡΠ»Π΅ΠΉ ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ
ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π±Π΅Π· ΠΊΡΡΠΈ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ΅ΡΠ° ΠΊΠΎΠ΄Π°, ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΌΠ΅ΡΠ°ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π½Π° ΠΏΠ°ΠΌΡΡΡ GC ΠΈ Ρ. Π. ΠΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ³Π°Π΄Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π±Π΅Π· ΠΊΡΡΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π― Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρ ΡΠΎΠ³ΠΎ Π΄Π½Ρ, ΠΊΠΎΠ³Π΄Π° Java ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ»Π°ΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠΎ Ρ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ, ΡΡΠΎ ΠΌΡ Π΅ΡΠ΅ ΠΎΡΠ΅Π½Ρ Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ JAVA_OPTS ΠΈ jre, ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΡΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
-Xss256K -Xms1M -XX:+UseSerialGC -Djava.compiler=none -XX:ReservedCodeCacheSize=2496k -XX:MaxDirectMemorySize=1M
jre ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ
stack_threads: 20
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Π½Π΅Π΅ 512 ΠΠ, Π½Π°ΡΡΡΠΎΠΈΠ² ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡ (Π²Π΅ΡΠ΅Π½Π½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° + webflux).
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ vanilla webflux Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΠ .
Π― Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π·Π°Π±ΠΎΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΊΡΡΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ΅ OOME (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Metaspace), Π½ΠΎ Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΅Π³ΠΎ ΡΠ»ΡΡΡΠΈΡΡ.
Π Π°Π·ΠΌΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (300?) Π ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π»Ρ webflux.
ΠΠ»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² README Π±ΡΠ»ΠΈ Π±Ρ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ.