Discourse deja de funcionar: ¿carga de CPU/RAM?

Hola a todos.

Espero que alguien pueda ayudarme a resolver un problema que tenemos actualmente en nuestro foro :-
https://forum.combustionpunks.co.uk
Esta es una historia larga… pero quiero proporcionar toda la información que pueda ayudar a resolver el problema, así que por favor, tened paciencia. A lo largo de esto, notaréis que no tengo mucha experiencia con Ubuntu :frowning:

Todo ha funcionado a la perfección durante bastante tiempo :smiley: hasta anoche por la tarde.
Estamos haciendo un pequeño rebranding, actualizando logotipos y cosas por el estilo, así que ayer estaba en el panel de administración subiendo los nuevos logotipos. También noté que estábamos varios versiones por detrás, así que ejecuté las actualizaciones; tuve que hacerlo manualmente siguiendo las instrucciones de aquí:-

por ejemplo:
cd /var/discourse
git pull
./launcher rebuild app

Todo pareció ir bien, las actualizaciones se completaron, los logotipos se subieron y se mostraron correctamente, probé algunos temas, volví al original y luego salí a un evento social relacionado con el foro… sí, fui a un pub a cenar con mis amigos.

Aproximadamente 30 minutos después, mientras estábamos fuera, nos dimos cuenta de que el foro estaba fuera de línea… un pequeño pánico, luego notamos que Digital Ocean tenía problemas, así que nos relajamos.

Volvimos unas 2 horas después, los problemas de DO se resolvieron, pero el foro seguía fuera de línea… no te preocupes, reinicié la droplet y todo volvió a funcionar correctamente… unas 30 minutos después estaba fuera de línea nuevamente…

Luego pensé que sería mejor limpiar cualquier otra actualización pendiente, así que intenté actualizar Docker con:
wget -qO- https://get.docker.com/ | sh
Esto no pareció hacer mucho.
Reconstruí la aplicación con ./launcher rebuild app
No creo que se haya actualizado, ya que al reconstruir la aplicación dice:
docker versión 17.05.0-ce obsoleta y al ejecutar docker version informa 17.05.0-ce

Luego noté que justo antes de que el foro se fuera fuera de línea, estábamos recibiendo mensajes como:
Out of memory: kill process (convert) or sacrifice child
Out of memory: kill process (ruby) or sacrifice child

Ejecuté Htop

Muchas instancias de sidekiq, encontré una publicación sobre reducir la cantidad de hilos que se reconstruyen a la vez: reduje de 80 a 2, pero los problemas continuaron.

Instancias de convert ejecutándose contra JPEGs en var/www/discourse/public/uploads/default/original/ (no sé cómo mostrar el resto de la cadena para ver contra qué imágenes se están ejecutando).

Uso de CPU al 100% - Ruby var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E

Actualicé el sistema operativo: ahora ejecuto Ubuntu 18.04.
Docker sigue en 17.05.0-ce.

Redimensioné la droplet de 2GB 1vCPU 50GB ($10) a 3GB 1vCPU 50GB ($15).
Los problemas continúan.

Reiniciar la droplet o reconstruir Discourse la hace funcionar de nuevo durante un corto período (10-30 minutos) antes de que vuelva a estar fuera de línea.

Cualquier ayuda con esto sería muy apreciada, muchas gracias de antemano.
Matt

Hace un tiempo se realizaron algunos cambios en la forma en que se comprimen las imágenes. Es probable que estés experimentando un gran número de imágenes siendo procesadas. Esto debería disminuir pronto, pero si tienes muchas imágenes, podría tardar un poco. Puedes ejecutar

  ps -ax

o

 top

para ver qué está en ejecución. Presiona q para salir de top.

Gracias @pfaffman, dejaré que siga funcionando un poco más y veré si lo procesa y se estabiliza un poco.

Has seguido la mayoría de los pasos de solución de problemas que recomendamos, buen trabajo. ¿Hay muchas imágenes en tu foro?

Te aconsejo que actualices Docker en cuanto tengas oportunidad.

Y cuando lo hagas, recuerda reiniciar después de actualizar Docker. No hay ninguna advertencia y Docker no funcionó para mí ayer después de la actualización hasta que pensé en reiniciar.

Muchas gracias, chicos.

El problema sigue ocurriendo :frowning: ruby /vazr/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E está usando el 98% de la CPU en este momento, el foro está inaccesible.

Número de imágenes: no estoy seguro de cómo calificarlo, pero son bastantes. Aunque no somos un foro enorme, df muestra que se ha utilizado el 80% de los 50 GB. En el panel de administración de Discourse, se muestran 5.7 GB de subidas.

El comando de actualización de Docker que intenté no pareció hacer nada. He encontrado instrucciones sobre cómo instalar en Ubuntu 18, pero no sobre cómo actualizar… ¿Debería seguir las instrucciones de instalación?

Antes del reinicio del droplet esta mañana, no había procesos de conversión visibles; después del reinicio, ahora hay 5 procesos utilizando aproximadamente el 50% de la CPU y la RAM. El resto parece estar en uso por Ruby, mientras que los procesos de Sidekiq utilizan recursos de forma intermitente. El procesador y la RAM siguen alcanzando su capacidad máxima constantemente.

Los procesos de conversión siguen siendo finalizados por falta de memoria.

¿Creen que aún hay una cola de trabajo pendiente? ¿Ayudaría redimensionar el droplet para procesar esa cola? El foro solo permanece en línea hasta 30 minutos a la vez, a menudo menos.

No he logrado resolver esto, así que aumentaré el tamaño del droplet para ver si puede completar el redimensionamiento de la imagen, si eso es lo que está haciendo.

Después de cambiar el tamaño, asegúrate de ejecutar discourse-setup para ajustar los parámetros de memoria y reconstruir (o destruir e iniciar).