Mi instalación de Discourse se ha ido volviendo cada vez más lenta durante las últimas semanas. En el pasado, cuando esto sucedía, reconstruir la aplicación ayudaba. Sin embargo, ahora no parece ayudar.
He buscado consejos en este foro y he probado algunas optimizaciones de la base de datos (vacuum full verbose, rebuild index, vacuum analyze verbose).
Sin embargo, nada de esto parece ayudar, y cuando inicio el contenedor, tarda mucho, mucho tiempo antes de que pueda conectarme al foro.
Si esto continúa, el foro eventualmente se volverá completamente inutilizable. ¿Alguna idea por dónde empezar a buscar?
Parece que guardar una publicación es particularmente propenso a tiempos de espera y fallos.
No estoy seguro de si eso es una pista de lo que está pasando.
Esa salida de vmstat nos dice que, tal como están las cosas, no hay suficiente RAM.
Podría ser que Discourse esté funcionando como debe, y todo esté como debe estar, pero que tus datos hayan crecido hasta el punto en que 4G de RAM no son suficientes.
O podría ser que algo haya salido mal y se esté utilizando mucha RAM que no debería utilizarse.
Una medida del tamaño es hacer una copia de seguridad sin archivos adjuntos y ver qué tamaño tiene.
Puede que el mini-profiler dé una pista sobre qué acciones de la base de datos están tardando tanto.
Si tienes presupuesto para duplicar la RAM, hazlo. (Si te aseguras de aumentar la RAM pero dejas el almacenamiento como está, si tienes esa opción de tu proveedor, entonces este puede ser un cambio reversible e incluso temporal).
Si no puedes permitirte más RAM, puedes intentar establecer valores más bajos para db_shared_buffers (por ejemplo, 128 MB o menos) y limitar UNICORN_WORKERS a solo 2 mientras tanto, ya que necesitas detener el intercambio lo antes posible.
Más RAM es bastante caro con mi proveedor de alojamiento, así que exploraré otras opciones primero. (Y me preocupa que cambiarlo rompa mi precio garantizado…)
Cambié db_shared_buffers a 128Mb y UNICORN_WORKERS a 2.
¿Es launcher app stop / start suficiente para que estas configuraciones surtan efecto?
Con un Alt+P en tu teclado, las acciones posteriores del foro deberían mostrar una cadena de tiempo justo debajo del banner del foro (para mí, a la derecha) y si haces clic en el tiempo, verás una ventana emergente con algunas estadísticas.
Eso es más o menos lo mismo que el mío, funcionando con 1G de RAM. Tengo 2k temas, 15k publicaciones, más de 500 registros.
¿Cuál es la historia de tu Discourse? Recuerdo vagamente un momento en el pasado en el que se suponía que se debía crear un índice para alguna tabla por razones de rendimiento.
¿Qué pasa con los plugins? ¿Puedes ejecutar acciones en modo seguro para ver si se ejecutan más rápido?
¿Hay algún lugar fácil para encontrar tales estadísticas?
La mayoría de las estadísticas que veo me muestran lo que sucedió en el último día o semana, pero no totales.
No estoy seguro de a qué te refieres con historia. Pero lo empecé en marzo de 2021.
La primera impresión es que el modo seguro no es más rápido. Jugaré con él y con el mini-profiler para ver si esa impresión se mantiene.
En la página /about, hay una columna para todo el tiempo.
Parece que tu máquina no se ha reiniciado en más de un año; probablemente valga la pena hacerlo y actualizarla por seguridad al mismo tiempo. Es muy posible que el reinicio ayude.
Creo que he notado que tu servidor está configurado para usar hypervisor mientras que el mío está configurado para usar lxc. No sé si eso es importante. (Mi sistema muestra un proceso /usr/bin/lxcfs que el tuyo no tiene, y el tuyo muestra un proceso hv_vss_daemon que el mío no tiene.)
Además, tal vez podrías compartir la salida de df -T y swapon.
¡Estoy de acuerdo con una actitud escéptica al respecto! Pero no lo sugiero a la ligera: estoy bastante seguro de que hemos visto un caso de un sistema de larga duración que mejoró con un reinicio. (Editar: aquí, aunque fue un caso diferente).