Uso de CPU inusualmente alto

Esto no me parece un problema de memoria; solo hay alrededor de 6 GB ocupados por las aplicaciones. Se está produciendo mucha lectura, lo que, a mi parecer (junto con que sidekiq esté ocupado), quizás postgres esté leyendo muchos datos antiguos del disco, tal vez para realizar algunas tareas de estadísticas. Si la base de datos no cabe en la RAM, es posible que realice muchas lecturas si se está accediendo a esos datos más antiguos. Eso es lo que me parece.

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
admin    2510013 15.8  1.6 7383364 514764 ?      SNl  12:55  56:45 sidekiq 7.3.9 discourse [3 of 5 busy]
systemd+ 2848301 26.9 25.3 8058104 7806820 ?     Rs   17:45  18:18 postgres: 13/main: discourse discourse [local] SELECT
systemd+ 2870880  4.3 22.9 8058516 7072000 ?     Ds   18:03   2:09 postgres: 13/main: discourse discourse [local] SELECT
systemd+ 2875058 21.0 25.4 8101952 7848140 ?     Rs   18:07   9:46 postgres: 13/main: discourse discourse [local] UPDATE
systemd+ 2924006 30.2 25.3 8112844 7824292 ?     Rs   18:44   2:44 postgres: 13/main: discourse discourse [local] UPDATE
jystemd+ 2929546 12.8 24.9 8049520 7694404 ?     Ss   18:48   0:39 postgres: 13/main: discourse discourse [local] SELECT
systemd+ 2931802 17.7 24.5 8045744 7559492 ?     Ss   18:50   0:36 postgres: 13/main: parallel worker for PID 946796
systemd+ 2931803 17.7 24.5 8045744 7557568 ?     Ds   18:50   0:36 postgres: 13/main: parallel worker for PID 946796

Yo miraría primero a sidekiq; apuesto a que está ocupado ejecutando actualizaciones. Comprueba la URL /sidekiq mientras inicias sesión como administrador para ver qué está haciendo. Probablemente te mostrará algunas tareas de actualización de larga duración.

También puedes, en el servidor SQL:

SELECT pid, application_name, query
FROM pg_stat_activity
WHERE state IS NOT NULL
  AND state != 'idle';

para ver qué consultas se están ejecutando y qué las está llamando. Eso te dará una pista sobre lo que está causando la carga.

¿Tienes habilitadas las cabeceras de rendimiento? Puedes activarlas y capturarlas en los registros para que te digan cuánto tiempo está dedicando Discourse a cada parte.

3 Me gusta