🐳 Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ памяти для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Docker

by itisgood

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Docker ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° рСсурсы.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ объСм памяти, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° сосСдниС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° вашСм хостС.

Π­Ρ‚ΠΎ опасно Π² производствСнных срСдах.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ настроСн с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ памяти для прСдотвращСния Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ потрСблСния рСсурсов.

Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ количСство ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ², Ρ‡Ρ‚ΠΎ максимально повысит ΠΎΠ±Ρ‰ΡƒΡŽ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы.

Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ограничСния памяти Π² Docker

Docker позволяСт ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ТСсткиС ΠΈ мягкиС ограничСния памяти для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Они ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° объСм доступной памяти ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ достиТСнии Π»ΠΈΠΌΠΈΡ‚Π°.

  • hardΒ limit памяти ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ Π»ΠΈΠΌΠΈΡ‚ памяти, прСдоставляСмой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ. ΠŸΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ этого Π»ΠΈΠΌΠΈΡ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ процСсса ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ·-Π·Π° отсутствия памяти Π² ядрС.
  • softΒ limit памяти ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ объСм памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большС памяти ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ свободного мСста. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, Ссли прСвысит мягкий Π»ΠΈΠΌΠΈΡ‚ Π² условиях Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти.

Docker Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт элСмСнты управлСния для установки ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΡƒ памяти ΠΈ измСнСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ достиТСнии Π»ΠΈΠΌΠΈΡ‚Π° памяти.

Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….

Установка ТСстких ΠΈ мягких ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ памяти

ЖСсткий Π»ΠΈΠΌΠΈΡ‚ (hard limit) памяти задаСтся Ρ„Π»Π°Π³ΠΎΠΌ -m ΠΈΠ»ΠΈ –memory ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ docker run.

Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 512m (для ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΎΠ²) ΠΈΠ»ΠΈ 2g (для Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ΠΎΠ²):

$ docker run --memory=512m my-app:latest

МинимальноС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ памяти ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² составляСт 6 ΠœΠ‘.

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния –memory мСньшС 6m ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.

МягкиС ограничСния памяти (soft limit ) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° –memory-reservation.

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ –memory.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли происходит Π±ΠΎΡ€ΡŒΠ±Π° Π·Π° рСсурсы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ»ΠΈ хосту Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ физичСской памяти.

$ docker run --memory=512m --memory-reservation=256m my-app:latest
Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ запускаСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ 256 ΠœΠ‘ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ памяти.
ΠŸΡ€ΠΎΡ†Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, Ссли ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 300MB ΠΈ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ заканчиваСтся.
Он всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ, Ссли использованиС прСвысит 512MB.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ для обСспСчСния высокого уровня использования Π±Π΅Π· влияния Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ физичСской памяти.

Π‘Π²ΠΎΠΏ позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ содСрТимоС памяти Π½Π° диск, ΠΊΠΎΠ³Π΄Π° доступная опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ исчСрпана.

Π€Π»Π°Π³ –memory-swap управляСт объСмом доступного пространства ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ.

Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² сочСтании с –memory.

Когда Π²Ρ‹ устанавливаСтС –memory ΠΈ –memory-swap Π² Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ swap ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ объСм памяти, доступный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пространство ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° –memory опрСдСляСт Ρ‡Π°ΡΡ‚ΡŒ этого объСма, которая являСтся физичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

$ docker run --memory=512m --memory-swap=762m my-app:latest

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ 762 ΠœΠ‘ памяти, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 512 ΠœΠ‘ – это физичСская опСративная ΠΏΠ°ΠΌΡΡ‚ΡŒ.

ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ 250 ΠœΠ‘ – это пространство ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ, хранящССся Π½Π° дискС.

Установка –memory Π±Π΅Π· –memory-swap Π΄Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ доступ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ пространства ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ физичСская ΠΏΠ°ΠΌΡΡ‚ΡŒ:

$ docker run --memory=512m my-app:latest

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π² ΠΎΠ±Ρ‰Π΅ΠΉ слоТности 1024 ΠœΠ‘ памяти, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… 512 ΠœΠ‘ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ 512 ΠœΠ‘ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ.

ΠŸΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, установив Ρ„Π»Π°Π³ –memory-swap Π² Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ –memory.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ –memory-swap Π·Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ объСм памяти, Π° –memory выдСляСт долю физичСской памяти, Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Docker, Ρ‡Ρ‚ΠΎ 100% доступной памяти Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ RAM.

Π’ любом случаС своп Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π° вашСм хостС.

ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎ свопС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠ°ΠΊ free, выполняСмыС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠΉ объСм пространства ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ Π½Π° хостС Docker, Π° Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΡƒ, Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Docker ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π±Π΅Π· Π·Π°Ρ€Π°Π½Π΅Π΅ установлСнных ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° рСсурсы.

Π­Ρ‚ΠΎ позволяСт процСссам ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° свободно ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство памяти, угроТая ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ вашСго хоста.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅:

 

You may also like

Leave a Comment