Discourse cesse de fonctionner - charge CPU/RAM ?

Bonjour à tous,

J’espère que quelqu’un pourra m’aider à résoudre un problème que nous rencontrons actuellement sur notre forum :-
https://forum.combustionpunks.co.uk
C’est une longue histoire… mais je veux fournir toutes les informations susceptibles d’aider à résoudre le problème, alors veuillez me suivre. Au fil de ce récit, vous remarquerez que je n’ai pas beaucoup d’expérience avec Ubuntu :frowning:

Tout fonctionnait parfaitement depuis un certain temps maintenant :smiley: jusqu’à hier soir.
Nous procédons à un léger rebranding, avec de nouveaux logos et autres, alors hier, j’étais dans le panneau d’administration pour télécharger les nouveaux logos. J’ai également remarqué que nous étions à quelques versions en retard, alors j’ai lancé les mises à jour. J’ai dû les effectuer manuellement en suivant les instructions ici :-

Par exemple :
cd /var/discourse
git pull
./launcher rebuild app

Tout semblait se passer correctement, les mises à jour étaient terminées, les logos étaient téléchargés et s’affichaient. J’ai testé quelques thèmes, puis suis revenu à l’original, avant de sortir pour une activité sociale liée au forum… oui, je suis allé au pub avec mes amis pour un repas.

Environ 30 minutes plus tard, alors que j’étais encore dehors, nous avons remarqué que le forum était hors ligne… un petit moment de panique, puis nous avons vu que Digital Ocean rencontrait des problèmes, donc je me suis calmé.

Je suis revenu environ 2 heures plus tard. Les problèmes de DO étaient résolus, mais le forum était toujours hors ligne… pas de souci, j’ai redémarré le droplet, tout est revenu normalement… environ 30 minutes plus tard, il était à nouveau hors ligne…

Ensuite, j’ai pensé qu’il serait préférable de supprimer toutes les autres mises à jour en attente, alors j’ai essayé de mettre à jour Docker avec :
wget -qO- https://get.docker.com/ | sh
Cela n’a pas semblé faire grand-chose.
J’ai reconstruit l’application avec ./launcher rebuild app.
Je ne pense pas que cela ait été mis à jour, car lors de la reconstruction de l’application, il est indiqué :
docker version 17.05.0-ce depreciated, et lorsque j’exécute docker version, il affiche toujours 17.05.0-ce.

Ensuite, j’ai remarqué que juste avant que le forum ne devienne hors ligne, nous recevions des messages du type :
Out of memory: kill process (convert) or sacrifice child
Out of memory: kill process (ruby) or sacrifice child

J’ai lancé Htop.

De nombreuses instances de sidekiq. J’ai trouvé un post sur la réduction du nombre de threads traités simultanément - réduit de 80 à 2 - mais les problèmes ont persisté.

Des instances de convert s’exécutaient sur des fichiers JPEG dans var/www/discourse/public/uploads/default/original/ (je ne sais pas comment afficher le reste de la chaîne pour voir sur quelles images elles s’exécutent).

Utilisation du CPU à 100 % - Ruby var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E

Mise à jour du système d’exploitation - Ubuntu 18.04 est maintenant en cours d’exécution.
Docker est toujours en version 17.05.0-ce.

Le droplet a été redimensionné de 2 Go 1 vCPU 50 Go (10 ) à 3 Go 1 vCPU 50 Go (15 ).
Les problèmes persistent.

Redémarrer le droplet ou reconstruire Discourse le remet en ligne pendant une courte période (10 à 30 minutes) avant qu’il ne devienne à nouveau hors ligne.

Toute aide à ce sujet serait grandement appréciée. Merci beaucoup d’avance.
Matt

Il y a quelque temps, des modifications ont été apportées à la compression des images. Vous subissez probablement actuellement un afflux de traitement d’images. La situation devrait s’apaiser bientôt, mais si vous avez un grand nombre d’images, cela pourrait prendre un certain temps. Vous pouvez exécuter :

  ps -ax

Ou

 top

Pour voir ce qui est en cours d’exécution. Appuyez sur q pour quitter top.

Merci @pfaffman, je vais laisser tourner un peu plus longtemps pour voir si cela parvient à tout traiter et se stabilise un peu.

Vous avez suivi la plupart des étapes de dépannage que nous recommandons, bravo. Y a-t-il un grand nombre d’images sur votre forum ?

Je vous conseille de mettre à jour Docker dès que vous en aurez l’occasion.

Et lorsque vous le ferez, n’oubliez pas de redémarrer après la mise à niveau de Docker. Il n’y a aucun avertissement, et Docker ne fonctionnait pas pour moi après une mise à niveau effectuée hier, jusqu’à ce que je pense à redémarrer.

Merci beaucoup les gars.

Le problème persiste toutefois :frowning: ruby /vazr/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn -E utilise 98 % du CPU en ce moment, le forum est indisponible.

Nombre d’images : je ne sais pas comment vous qualifier cela, mais il y en a pas mal, même si nous ne sommes pas un énorme forum. La commande df indique que 80 % des 50 Go sont utilisés, tandis que le panneau d’administration de Discourse affiche 5,7 Go de données uploadées.

La commande de mise à jour Docker que j’ai essayée n’a apparemment rien fait. J’ai trouvé des instructions pour l’installation sur Ubuntu 18, mais pas pour la mise à jour… Devrais-je suivre les instructions d’installation ?

Avant le redémarrage du droplet ce matin, aucun processus de conversion n’était visible. Après le redémarrage, il y en a maintenant 5, utilisant environ 50 % du CPU et de la RAM. Le reste semble être utilisé par Ruby, avec des processus Sidekiq utilisant les ressources de manière intermittente. Le processeur et la RAM sont toujours saturés en permanence.

Les processus de conversion continuent d’être arrêtés par manque de mémoire.

Pensez-vous qu’il reste encore une file d’attente de tâches à traiter ? Une nouvelle augmentation de la taille du droplet aiderait-elle à traiter cette file d’attente ? Le forum ne reste en ligne que 30 minutes au maximum, souvent moins.

Je n’ai pas réussi à résoudre ce problème. J’augmente la taille du droplet pour voir si cela permet de terminer le redimensionnement de l’image, si c’est bien ce qu’il fait.

Après avoir redimensionné, assurez-vous d’exécuter discourse-setup pour ajuster les paramètres de mémoire et reconstruire (ou détruire et redémarrer).