Acabamos de publicar una nueva imagen de contenedor que se utilizará en su próximo comando ./launcher rebuild app. Como siempre, no es necesario cambiar ninguna configuración si ha seguido nuestra Instalación Estándar Oficial de Discourse. Dicho esto, hay nuevas funciones que ayudarán a algunas instalaciones.
Redis 6
Hacemos un uso intenso de Redis en muchas partes de Discourse, ya sea para caché, Sidekiq, MessageBus, bloqueos distribuidos o límites de velocidad. En general, ha sido una opción muy sólida para nosotros.
Sin embargo, en cargas de trabajo muy específicas, Redis puede convertirse en un cuello de botella. Y debido a la naturaleza de un solo hilo de Redis, sumado a nuestra incapacidad de usar múltiples instancias debido a nuestros scripts LUA, esto significaba que era un cuello de botella difícil de evitar.
Afortunadamente, Redis 6 incluye soporte para usar un pool de hilos para operaciones de E/S, y durante nuestras pruebas funciona muy bien con clústeres de Discourse limitados por Redis.
Por lo tanto, si está ejecutando en una máquina con muchos núcleos de CPU y métricas que muestran que Redis lucha por manejar la carga, ahora puede optar por usar hilos para operaciones de escritura mediante la sección de parámetros en app.yml:
params:
redis_io_threads: "4" # 1 lo desactiva, n>1 usa n-1 hilos adicionales para escrituras de E/S
Imagen más pequeña
Optamos por publicar una imagen de contenedor grande al inicio del proyecto para facilitar que personas no técnicas ejecuten Discourse y manejen todas las dependencias necesarias, versionado, actualizaciones, etc.
Dicho esto, recientemente la imagen comprimida superó los 1 GB, lo cual era un poco demasiado.
Por lo tanto, para mitigar el tamaño cada vez mayor de la imagen, movimos el código fuente de Discourse dentro de la imagen de una copia completa del código fuente a un “clon superficial” que contiene solo la versión más reciente del código.
Este cambio reduce el tamaño de la imagen comprimida en un 25 %, lo que resulta en menos espacio en el servidor necesario y reconstrucciones más rápidas cuando se publica una nueva imagen. También debería controlar el crecimiento de la imagen con el tiempo.
Lo probamos en tests-passed/beta/stable, tanto con reconstrucciones como con actualizaciones web, y no rompe ninguna ruta estándar. Sin embargo, los usuarios que realicen operaciones git más exóticas en los hooks de app.yml podrían tener que adaptar sus personalizaciones.