Red de conocimientos sobre prescripción popular - Conocimiento dental - Cómo reutilizar los recursos descartados del contenedor emergente

Cómo reutilizar los recursos descartados del contenedor emergente

Recientemente, hablé con algunos colegas de Alibaba sobre el uso de Docker para implementar aplicaciones Java. Una de las preguntas más comunes es cómo establecer el límite de memoria de JVM en el contenedor.

Si utiliza la imagen oficial de Java o una imagen de Docker basada en la imagen de Java, puede configurar fácilmente los parámetros de memoria de la JVM pasando la variable de entorno JAVA_OPTS. Por ejemplo, para la imagen oficial de Tomcat, podemos ejecutar el siguiente comando para iniciar una instancia de Tomcat con una memoria máxima de 512 M.

docker run-RM-e JAVA _ OPTS = '-xmx 512m ' Tomcat:8

En el registro podemos encontrar claramente que la configuración ha tenido efecto "Parámetro de línea de comando: -xmx512m".

Apilamiento automático

El código fuente está disponible en Github. Se basa en la imagen oficial de Tomcat de Docker y su script de inicio verifica el límite de memoria en el CGroup y calcula el tamaño de montón máximo pasado por la JVM a Tomcat. Su código es el siguiente

#!/bin/bash

limit _ in _ bytes = $(cat/sys/fs/cgroup/memory/memory/denverdino/Tomcat:8 - Montón automático

Con el siguiente comando, podemos detectar en el registro que el parámetro JVM correspondiente se ha configurado en 448 MB (512-64)

Prueba de registro de Docker

...

02-Apr-2016 14:18:09.870 INFO[main]org . Apache . inicio del registrador de versiones .

...

También podemos ajustar fácilmente la memoria de las aplicaciones Java.

Docker 1.10 proporciona la capacidad de modificar dinámicamente los límites de recursos del contenedor. Sin embargo, debido a que la JVM no puede detectarlos. Modificación de los recursos del contenedor, por lo que aún necesitamos reiniciar Tomcat para cambiar la configuración de memoria de la JVM. Por ejemplo, podemos ajustar el límite de memoria del contenedor a 1 GB mediante el siguiente comando

docker update -m. Prueba de 1024 m

Prueba de reinicio de Docker

Compruebe el registro nuevamente, el tamaño máximo de almacenamiento dinámico de JVM correspondiente se ha establecido en 960 MB

Prueba de registro de Docker

...

02-Apr-2016 14:21:07.644 INFO[main]org . Apache . inicio del registrador de versión .