Java-buildpack: НСвозмоТно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ прилоТСния Spring Boot с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ <512 ΠœΠ‘

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 31 Π΄Π΅ΠΊ. 2018  Β·  8ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: cloudfoundry/java-buildpack

Π’ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ привСтствСнный ΠΌΠΈΡ€ 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 Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹.

ВсС 8 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ 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, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я установил для своих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ с Π½ΠΈΠ·ΠΊΠΈΠΌ объСмом памяти, Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния.

  • Π― установил для MaxMetaSize Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ΅ посрСдством профилирования.
    JAVA_OPTS
-Xss256K -Xms1M -XX:+UseSerialGC -Djava.compiler=none -XX:ReservedCodeCacheSize=2496k -XX:MaxDirectMemorySize=1M

jre конфигурация

  stack_threads: 20
Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ