Opción shm_size de Docker en app.yml

¿Sería posible convertir el parámetro shm_size en una opción en app.yml? Hoy encontré este error al intentar ejecutar un vacuum analyze:

ERROR: no se pudo redimensionar el segmento de memoria compartida

Estaba intentando aumentar el uso de shm a 1 GB y falló, ya que por defecto solo tiene 512 MB. Este parámetro parece estar en el script del lanzador, pero sería útil tenerlo como una opción (posiblemente comentada por defecto) en el archivo .yml.

Puedes pasar argumentos personalizados de Docker para sobrescribir los predeterminados que proporcionamos con --docker-args.

Creo que se verá algo así: ./launcher start app --docker-args "--shm-size=1024m"

7 Me gusta

Desafortunadamente, esto no funcionó cuando lo intenté. Creo que tal vez el contenedor necesita ser reconstruido para aumentar el tamaño del espacio de memoria compartida. Tuve que cambiar el valor en las áreas codificadas en el script del lanzador y luego reconstruir el contenedor para que realmente surtiera efecto.

Esto probablemente tampoco persistiría a través de actualizaciones/reconstrucciones; tendrías que cambiarlo manualmente cada vez.

1 me gusta

¿Qué comandos ejecutaste? Definitivamente tendrás que volver a compilar el contenedor para que la opción --shm-size surta efecto.

2 Me gusta

Lo único que hice al principio fue detener el contenedor y luego ejecutar el comando de inicio del lanzador con ese parámetro. Después, edité manualmente los parámetros --shm-size dentro del propio script del lanzador y reconstruí el contenedor. Entonces, el valor se ajustó correctamente. Si anulas el parámetro en la línea de comandos para reconstruir el contenedor, ¿no se perderá el cambio si realizas una actualización o reconstrucción a través de la interfaz /admin/upgrade? Por eso pensé que podría ser mejor convertirlo en un campo en app.yml, así se mantendría a través de reconstrucciones y actualizaciones de código.

1 me gusta

Hmm, veo que esto podría ser útil. @sam, ¿qué opinas al respecto?

1 me gusta

Eso nunca reconstruye el contenedor, por lo que es seguro.

¿No tenemos esto ya según:

docker_args: .... en tu yaml.

No estoy seguro. ¿Eso sobrescribe el propio archivo del launcher? Veo tres lugares donde la opción está codificada de forma rígida:

Entonces deberíamos solucionarlo, pero la corrección es un script de bash muy, muy complicado. Si quieres, puedes intentarlo.

Nuestra función de obtención de argumentos de Docker debería encargarse de shm-size, gestionar las anulaciones del usuario y establecer un valor predeterminado.

2 Me gusta

Hola @Ghan

Mientras tanto (con fines de prueba, consulta la advertencia a continuación), puedes cambiar esto directamente con Docker después de que se haya creado el contenedor, de la siguiente manera:

  • Edita directamente el archivo /var/lib/docker/containers/$CONTAINER_ID/hostconfig.json.
  • Por ejemplo, cambia el valor de ShmSize en el archivo anterior.
  • Detén y reinicia el contenedor.

En nuestro archivo hostconfig del contenedor Docker, se ve así:

"ShmSize":536870912,

Espero que esto ayude (HTH).

Advertencia: Algunas personas han publicado que debes asegurarte de que el servicio de Docker esté detenido antes de modificar hostconfig.json (de lo contrario, los cambios se sobrescribirán). Sin embargo, no he probado esto personalmente. Obviamente, una solución launcher es mejor :slight_smile:

¿Alguien sabe cuál es la solución actual para aumentar shm_size?

Editar: Parece que todavía está codificado.

Hilo relevante: