Bonjour à tous,
Je rencontre un problème et j’aimerais solliciter votre aide. J’ai installé un serveur Discourse en utilisant l’installateur basé sur Docker. Chaque jour vers midi, pour une raison encore inconnue, le serveur devient lent et la charge d’E/S augmente jusqu’à ce que le forum affiche des erreurs 500.
iotop m’indique toujours qu’il s’agit d’une commande UPDATE PostgreSQL qui consomme toutes les ressources d’E/S.
Aujourd’hui, lorsque le problème s’est reproduit, j’ai récupéré la liste de toutes les requêtes SQL en cours d’exécution avec cette commande :
sudo -u postgres psql discourse -o /tmp/RunningQueries -c ‘SELECT datname,pid,state,query FROM pg_stat_activity’
La sortie de cette commande est disponible ici sur Pastebin.
Comme vous pouvez le constater, à ces moments-là, environ 32 requêtes UPDATE sont en cours d’exécution. Lorsque cela se produit, iotop indique que la base de données effectue des lectures et des écritures allant de 2,5 Mo/seconde jusqu’à 15 Mo/seconde.
Si je corrèle la requête UPDATE en cours d’exécution avec la requête journalisée (dans /var/discourse/shared/standalone/log/var-log/postgresql), je constate que ces requêtes prennent un temps très long :
2018-07-03 12:51:27.052 UTC [17504] discourse@discourse LOG: duration: 2352061.872 ms statement: UPDATE drafts
SET data = '{"reply":"\u003credacted for debugging purposes\u003e","action":"reply","categoryId":24,"postId":118034,"archetypeId":"regular","whisper":false,"metaData":null,"composerTime":65922,"typingTime":8400}',
correspond à
discourse | 17504 | active | UPDATE drafts +
| | | SET data = '{"reply":"\u003credacted for debugging purposes\u003e","action":"reply","categoryId":24,"postId":118034,"archetypeId":"regular","whisper":false,"metaData":null,"composerTime":65922,"typingTime":8400}', +
| | | sequence = 124, +
| | | revisions = revisions + 1 +
| | | WHERE id = 84548
Si je redémarre l’application Docker, les requêtes finissent par se terminer, donc pour l’instant, je n’ai d’autre choix que d’attendre, ce qui rend mes utilisateurs mécontents.
Merci de me faire savoir s’il y a quoi que ce soit que je puisse faire pour atténuer ce problème — par exemple, déplacer les tâches de maintenance vers environ 5 heures du matin.
Si vous avez d’autres suggestions pour approfondir l’analyse, n’hésitez pas à les partager ! Toute aide est la bienvenue ![]()
Ninja-edit : Je viens de me souvenir d’une information supplémentaire : je n’ai pas pu relier ce problème à des tâches cron existantes (ni du système hôte ni de l’application Docker).
Quelques informations de contexte sur le serveur :
- Système d’exploitation du serveur : Ubuntu 18.04LTS
- Machine virtuelle avec 100 Go de disque, 4 Go de RAM, 4 cœurs
- Disque : RAID10 sur 6 disques de 15K tours
- Discourse v2.1.0.beta2 +107
- Plugins : babble, whos-online, voting, cakeday, anonymous-categories, league
- Vues de pages par jour : environ 75 000
- Utilisateurs : 1350, environ 700 actifs par jour
- 73 600 publications, 351 sujets, le sujet le plus actif contient 13 500 publications
Merci d’avoir lu jusqu’ici ! ![]()


