Tu conexión de red Redis está funcionando muy mal

Constantemente obtengo esto en los registros, con valores entre ~100k y ~1.35m, pero las lecturas cercanas a 100k parecen ser bastante comunes:

Tu conexión de red de Redis tiene un rendimiento extremadamente pobre. Las últimas lecturas de RTT fueron [97069, 103986, 98459, 100762, 381617], idealmente deberían ser < 1000. Asegúrate de que Redis se esté ejecutando en la misma AZ o centro de datos que Sidekiq. Si estos valores están cerca de 100 000, significa que tu proceso Sidekiq puede estar saturado de CPU; reduce tu concurrencia y/o consulta https://github.com/mperham/sidekiq/discussions/5039

¿Esto indica que quizás Redis no puede usar suficiente CPU? Sin embargo, parece haber mucho margen para la CPU y la RAM en el propio servidor.

También:
Sidekiq está consumiendo demasiada memoria (usando: 3570.19M) para 'www.example.com', reiniciando

Esto está usando la aplicación todo en uno app.yml con Discourse estable 3.3.2.

Desde el app.yml:

UNICORN_SIDEKIQS: 9
DISCOURSE_SIDEKIQ_WORKERS: 5

También agregué esta configuración al host:

Información del panel de Sidekiq:


Parece que Redis no puede superar el uso de memoria de 1024M.

Si alguien tiene alguna idea, ¡lo agradecería! :meow_heart:

Para dar seguimiento a esto, tengo el mismo problema con Jobs::PostAlert:

Con esos trabajos a menudo llegando a 15 minutos cuando se usan 4 sidekiqs con 5 hilos (predeterminado) con las pruebas actuales. Parece que la velocidad de trabajos por segundo para Sidekiq depende en gran medida de cuántos de esos trabajos se ejecutan simultáneamente y cuántos hilos están libres para los otros trabajos.

Aumentar los Sidekiqs a 6 o más (5 hilos) aumentará la velocidad de limpieza de la cola, pero postgres fallará con bastante regularidad (supongo que debido a que se ejecutan demasiados trabajos Jobs::PostAlert simultáneamente).

Esto está en Stable 3.3.2. Los cambios y correcciones del hilo enlazado ya parecen estar implementados en 3.3.2, si no me equivoco.

Postgres nunca debería fallar y, en general, indica un error de postgres o algún tipo de problema mayor.

¿Tienes registros?

2 Me gusta

¿Has reiniciado el servidor desde que hiciste esos cambios en la configuración del kernel?

Quizás

lscpu

también sería útil.

1 me gusta

Nunca deberías aumentar UNICORN_SIDEKIQS tanto, solo aumentar los workers pero

Esto nunca debería suceder.

Las posibilidades son:

  1. Tienes restricciones de recursos porque o
    a) Tu sitio ha superado los recursos del servidor
    b) Estás mal asignando recursos
  2. Hay un error en alguna parte de la pila

Yo empezaría haciendo

UNICORN_SIDEKIQS: 1
DISCOURSE_SIDEKIQ_WORKERS: 20

lo que debería liberar algo de RAM de tu servidor.

Para más información, necesitarás ejecutar los trabajos que causan el problema en una consola de PostgreSQL e informar cuál es el cuello de botella.

1 me gusta

Disculpas por desaparecer y gracias por las respuestas. :slight_smile:

Creo que el principal problema de la lentitud de Redis era que THP seguía activado (cuando pensaba lo contrario):

Para los fallos de PG, la solución principal para mí fue añadir esto a app.yml:

docker_args:
  - "--shm-size=34g"

Con el valor establecido en db_shared_buffers + 2GB, siendo db_shared_buffers el 25% de la RAM total de la máquina anfitriona.

Anulando el valor predeterminado de 512m:

1 me gusta

He revisado tu historial de publicaciones y veo en Problema de Sidekiq muy lento… números masivos de notificaciones de usuario no leídas que estabas utilizando un servidor de 32 núcleos y 128 GB, con una base de usuarios muy grande y activa. Así que, en ese contexto, ¡entiendo por qué 34G no es un número tan grande! Sin embargo, como contexto, podría ser útil (e interesante) conocer el tamaño de tu configuración, quizás aquí o incluso en tu biografía. (quizás usuarios activos diarios y mensuales, tamaño de las copias de seguridad de la base de datos, configuración del servidor en RAM, swap, disco, CPU). Tal vez incluso un hilo donde simplemente compartamos nuestras estadísticas, grandes y pequeñas.