Utilisation du CPU anormalement élevée

Cela ne me semble pas être un problème de mémoire : seules environ 6 Go sont utilisées par les applications. Il y a beaucoup de lecture en cours, ce qui, à mon avis (en plus de sidekiq étant occupé), signifie peut-être que postgres lit beaucoup de données anciennes depuis le disque, peut-être pour effectuer des tâches de statistiques. Si la base de données ne tient pas dans la RAM, elle risque d’effectuer beaucoup de lectures si ces données plus anciennes sont consultées. C’est ce que cela suggère.

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

Je regarderais d’abord sidekiq - je parie qu’il est occupé à exécuter des mises à jour. Vérifiez l’URL /sidekiq lorsque vous êtes connecté en tant qu’administrateur pour voir ce qu’il fait. Cela vous montrera probablement des tâches de mise à jour de longue durée.

Vous pouvez également, sur le serveur SQL :

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

pour voir quelles requêtes sont en cours d’exécution et ce qui les appelle. Cela vous donnera un indice sur ce qui cause la charge.

Avez-vous activé les en-têtes de performance ? Vous pouvez les activer et les capturer dans les journaux pour savoir combien de temps Discourse passe sur chaque partie.

3 « J'aime »