En los registros de errores, recibo intermitentemente los siguientes errores. Esto hace que el sitio sea inaccesible durante 15-30 segundos hasta que se restablece.
Mensaje de error de información:
PG::ConnectionBad (FATAL: el sistema de base de datos está en modo de recuperación) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’
Una cosa realmente extraña que he notado al observar estos registros es que parece estar buscando la carpeta en /var/www/…, pero esa carpeta no existe en el servidor. ¿Debería existir? Agradezco cualquier ayuda.
Si la base de datos está dañada, entonces el sitio también lo estará necesariamente. Necesitas averiguar por qué. Las razones más comunes son la falta de memoria RAM y espacio en disco. Mi suposición es que se trata de la RAM. ¿Cuánta memoria RAM tienes? ¿Qué muestra la salida de free -h?
Esa es la ruta dentro del contenedor. Si ejecutas ./launcher enter app, la verás allí.
Bueno, tienes 646 MB disponibles y 4 GB es suficiente, por lo que normalmente no se recomienda el uso de swap. ¿Qué tamaño tiene tu base de datos? ¿Cuánto tráfico recibes? ¿Hay algo más que Discourse ejecutándose en el servidor?
En el servidor no se está ejecutando nada más que Discourse.
Para obtener el tamaño, ejecuté:
./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));
La salida resultante fue 4650 MB (1 fila).
En cuanto al tráfico:
Ayer tuvimos 1.200 visualizaciones de página, 12.400 en la última semana. Aproximadamente 160 usuarios en la última semana y alrededor de 80 usuarios concurrentes en cualquier momento dado.
¡Eres el mejor! El swap de 1 GB parece haber solucionado todos los problemas de caídas. Honestamente, me alegro de que fuera un problema de RAM y no de la base de datos. Voy a aumentar la cantidad de RAM en el servidor este fin de semana. ¡Muchas gracias a todos los que ayudaron en este hilo!
Honestamente, no estoy seguro. Antes de esto, hicimos una reconstrucción y un reinicio del servidor después de cambiar el hardware hace un tiempo. Supongo que, tras un reinicio, Discourse habría detectado cualquier cambio en el sistema.
Después de instalar el archivo de intercambio, hubo momentos en los que se utilizaban más de 4 GB de “memoria”, por lo que parece que definitivamente ese fue el problema durante nuestros momentos de mayor actividad, lo cual coincide con los periodos en los que el servidor se bloqueó. Hoy realizamos una actualización y el sitio está funcionando muy bien ahora.
Pero no es así. Hay configuraciones que controlan, por ejemplo, cuánta memoria RAM puede usar la base de datos y que están incrustadas en app.yml. Puedes editarlas manualmente o volver a ejecutar discourse-setup.