Debido a la carga extrema, esto se muestra temporalmente a todos... cuando en realidad no es el caso

Hola,

este mensaje empezó a aparecer casi constantemente desde la última vez que actualicé discourse hace un par de días.

No habría abierto un tema aquí si no fuera porque… no es cierto.
El mensaje aparece pero puedes navegar por el foro como si hubieras iniciado sesión, nada se muestra realmente como si no lo hubieras hecho.

Al verificar los recursos utilizados/disponibles en el host, no se muestra que la máquina esté sobrecargada ni nada parecido.

¿Alguien puede ayudarme a entender cómo se activa este mensaje para que pueda empezar a investigar qué podría estar causando esta advertencia cuando en realidad no es el caso?

Ese mensaje es significativo, el hecho de que tu sistema tenga recursos libres es más indicativo de una configuración errónea que de una identificación errónea.

¿Cuántos unicorn_workers tienes?

Suponiendo que no hay nada más en el host, ¿has asignado 16 (dos por núcleo)?

Si estás usando Postgres local, ¿cuáles son tus db_shared_buffers?

Dejé la configuración predeterminada del ./launcher en la configuración inicial y fueron 8 workers.
Lo mismo para db_shared_buffers: 4096MB

Sin embargo, debido a algunas pruebas, la razón por la que puedes leer aquí, los workers se redujeron a 4. No tuvo ningún efecto, así que al menos puedo restaurarlos a 8.

La razón por la que no es 2xCore es que esto es una VM y esas son vCPU en realidad, no núcleos reales.

Monitorearé la instancia por un tiempo y volveré para asignar la solución si ese es el caso, gracias @Stephen

El mensaje se relaciona con los recursos que asignas a Discourse, no con los recursos de la VM/host.

Obtén db_shared_buffers al 25% de tu memoria reservada y 2 workers de unicorn por CPU. Puede ser necesario un ajuste fino.

Obviamente, también necesitas administrar los recursos fuera de la VM si sientes que el grupo de recursos no es confiable. Casi todos los que ejecutan Discourse lo hacen en algún tipo de VPS.

No soy un experto en discourse, así que simplemente ejecuté el script que lo instala, ya que recuerdo que debería establecer esos parámetros según la memoria/cpu disponible.

He restaurado los workers a como estaban antes de algunas pruebas y volveré a revisarlo.
Para ser honesto, no tuvimos ningún problema con esas configuraciones, pero también podría no estar relacionado o solo estar parcialmente relacionado.

Tendré en cuenta tu sugerencia de 2 núcleos para los workers y el 25% de la memoria reservada para los buffers compartidos de la base de datos.

Cuando dices memoria reservada, ¿te refieres a la memoria reservada por el contenedor en ejecución? Porque parece ser siempre “tanta como el host tenga disponible” :ojos:

esto es lo que hace discourse-setup:

# db_shared_buffers: 128MB para 1GB, 256MB para 2GB, o 256MB * GB, máximo 4096MB
# UNICORN_WORKERS: 2 * GB para 2GB o menos, o 2 * CPU, máximo 8

‘máximo’ se puede tomar con una pizca de sal, especialmente las comunidades grandes verán beneficios más allá de esos números.

Así que sí, en tu caso debería haber especificado los máximos de 8 workers y 4096MB. Si reduces los workers y los shared buffers disponibles para Discourse, se agotará antes de que se consuman todos los recursos de la VM.

Esta publicación de @mpalmer sigue siendo una buena guía:

Me parece que se activa cuando las solicitudes están en cola durante demasiado tiempo; en otras palabras, las solicitudes llegan más rápido de lo que se atienden. Uno podría preguntarse por qué tantas solicitudes o por qué un servicio tan lento. A nivel de Discourse, hay parámetros ajustables que ya se discuten en este hilo y también, por ejemplo, en Error de carga extrema.

A nivel de Linux, comprobaría

uptime
free
vmstat 5 5
ps auxrc

Actualización: aumentar los trabajadores solucionó el problema

Seguimiento rápido.

Desde entonces, todo parecía estar bien, pero desde hace un par de días el foro se siente “lento” a veces. Cuando digo lento, me refiero a que las solicitudes tardan en procesarse (enviar respuestas, editar, etc.) y justo ahora he notado el mismo mensaje de nuevo.

Fui a revisar el panel de Grafana que configuré y vi que el servidor está al límite en cuanto a uso de CPU.

Un rápido docker stats me muestra esto:

CONTAINER ID   NAME                      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS
2c81f3b51e74   app                       800.14%   18.18GiB / 29.38GiB   61.87%    57.1GB / 180GB    31.1TB / 7.45TB   282
5164921ee233   grafana                   0.05%     98.36MiB / 29.38GiB   0.33%     2.05GB / 284MB    7.26GB / 6.17GB   17
400e496902d7   prometheus                0.67%     139.1MiB / 29.38GiB   0.46%     101GB / 3.82GB    28GB / 27.6GB     14
e2af5bfa922f   blackbox_exporter         0.00%     13.71MiB / 29.38GiB   0.05%     169MB / 359MB     295MB / 27.4MB    14
581664b0fe9a   docker_state_exporter     8.59%     11.86MiB / 29.38GiB   0.04%     533MB / 8.67GB    65.2MB / 6.16MB   15
408e050e9dc9   discourse_forward_proxy   0.00%     5.926MiB / 29.38GiB   0.02%     40.1GB / 40.1GB   36.8MB / 9.68MB   9
fbba6c927dd8   cadvisor                  9.13%     385.5MiB / 29.38GiB   1.28%     2.25GB / 135GB    85.1GB / 2.65GB   26
8fe73c0019b1   node_exporter             0.00%     10.74MiB / 29.38GiB   0.04%     112MB / 1.84GB    199MB / 2.82MB    8
9b95fa3156bb   matomo_cron               0.00%     4.977MiB / 29.38GiB   0.02%     81.4kB / 0B       49.4GB / 0B       3
553a3e7389eb   matomo_web                0.00%     8.082MiB / 29.38GiB   0.03%     2.15GB / 6.36GB   215MB / 2.36GB    9
adf21bdea1e5   matomo_app                0.01%     78.13MiB / 29.38GiB   0.26%     8.63GB / 3.74GB   59.8GB / 3.07GB   4
96d873027990   matomo_db                 0.06%     36.8MiB / 29.38GiB    0.12%     3.11GB / 5.76GB   4.16GB / 8.35GB   13

¿Alguna idea de qué podría estar causando esto?

Intenté reiniciar la aplicación, la carga sigue aumentando en la misma cantidad inmediatamente después del reinicio.

¿Hay alguna forma de ver qué tipo de proceso está utilizando la mayor cantidad de recursos? Intenté revisar el panel de Sidekiq, pero solo me muestra la lista de procesos en ejecución/en cola y el tiempo promedio de ejecución, algunos son lentos (tardan minutos), pero no veo nada en procesamiento ahora mismo ni fallando.

Estoy actualizando todo para eliminar cualquier posible problema que pudiera surgir debido a algún problema con beta5. Ahora en 3.1.0.beta6 - 6892324767.

Aún así, el uso de la CPU es anormalmente alto. Normalmente fluctúa alrededor del 60%.

y probablemente

ps auxf

He habido un error en mi actualización

api_key = "a quick brown fox"
fetch("https://api.example.com/data", headers: { 'Authorization' => api_key })

Por favor, ayúdame a solucionarlo.

Reinicié el VPS también, por si acaso estaba ocurriendo algo extraño (dudo que fuera así ya que comenzó de repente ayer después de 150 días de funcionamiento), pero no, el mismo comportamiento.

Es algún proceso unicornio consumiendo todos los recursos de la CPU. ¿Hay alguna forma de obtener más información sobre lo que están haciendo esos unicornios ahí atrás?

Para un vistazo rápido, por supuesto que oscila, pero este es el promedio de los trabajadores unicornio en funcionamiento, lo que me parece anormal cuando lleva en funcionamiento desde el día anterior:

Tu load average > 8 en una máquina de 8 vCPU significa que tu servidor está sobrecargado.

Entre 8 unicornios, muchos pids de PostgreSQL y todo lo demás en tu servidor, no puede procesar las solicitudes entrantes lo suficientemente rápido. Al menos tienes mucha memoria :sweat_smile:

Es algo inusual que Discourse se vea limitado por la CPU de unicornio de esa manera. La mayoría de las veces que he visto que esto sucede, ha sido debido a un plugin que se porta mal. ¿Puedes compartir tu app.yml?

También, por favor, comparte los resultados de MiniProfiler al cargar tanto tu página de inicio como la página de un tema.

He pedido al hosting que investigue si nos están robando tiempo de CPU otros VPS en nuestro host, ya que es muy extraño que haya sucedido tan repentinamente sin que nada realmente cambiara de nuestro lado.

Estoy esperando que el soporte técnico regrese con algunos resultados.

Parece que esta captura de pantalla corta las etiquetas de las columnas, pero si una de las 3 primeras es un promedio, has resuelto el problema.

season 2 neighbor GIF

Gracias por las salidas. A modo de referencia, la primera línea de estadísticas de vmstat no es muy útil: las cinco líneas ofrecen la imagen necesaria.

Lo siento, olvidé actualizar aquí.

Al final fue como supuse. Se desplegó otro VPS en el host y lo estaba agotando.
Nos trasladaron a otro host menos de 24 horas después de abrir el ticket.

Bravo a Contabo :+1:

Pediría a los moderadores que dejen estas últimas respuestas aquí, aunque no estén relacionadas con “discourse”, ya que pueden ayudar a otros a descubrir otras razones por las que su instancia podría tener problemas.