Projet

Général

Profil

Tâche #35781

Scénario #35848: Gestion du service etherpad

Etherpad charge et plantage service

Ajouté par Laurent Brillard il y a environ 2 mois. Mis à jour il y a environ un mois.

Statut:
En cours
Priorité:
Normal
Assigné à:
Version cible:
Début:
29/02/2024
Echéance:
% réalisé:

0%

Restant à faire (heures):

Description

Bonjour Arnaud,

Sur Scribe 2.7 ou 2.8 à jour, j'ai remarqué que le service Etherpad plante assez souvent et charge beaucoup le serveur. Là je viens de voir :

● etherpad-apps.service - Etherpad-lite, the collaborative editor. 
     Loaded: loaded (/lib/systemd/system/etherpad-apps.service; enabled; vendor preset: enabled) 
     Active: active (running) since Wed 2024-02-28 07:27:58 +04; 1s ago 
   Main PID: 1816688 (start.sh) 
      Tasks: 12 (limit: 43224) 
     Memory: 74.5M 
     CGroup: /system.slice/etherpad-apps.service 
             ├─1816688 /bin/bash /usr/share/eole/nodejs/etherpad/start.sh 
             └─1816689 node /usr/share/eole/nodejs/etherpad/src/node/server.js 

févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: DEFAULT_CHARACTER_SET_NAME: 'utf8mb3', 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: DEFAULT_COLLATION_NAME: 'utf8mb3_general_ci' 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: } utf8mb4 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: [2024-02-28 07:27:59.338] [ERROR] console - Database is not configured with collation name that includes utf8mb4 -- This may lead to crashes when> 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: [2024-02-28 07:27:59.338] [INFO] console - { 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: DEFAULT_CHARACTER_SET_NAME: 'utf8mb3', 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: DEFAULT_COLLATION_NAME: 'utf8mb3_general_ci' 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: } utf8mb4 utf8mb3_general_ci 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: [2024-02-28 07:27:59.339] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are > 
févr. 28 07:27:59 s-lyc-0000a start.sh[1816689]: [2024-02-28 07:27:59.339] [INFO] console - RowDataPacket { character_set_name: 'latin1' } utf8mb4

Effectivement nos bases SQL sont configurées en utf8mb3_general_ci. Peut-être un changement à envisager ? Mais je ne pense pas que cela ralentissent le serveur...

Ensuite je vois ça :

févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.173] [ERROR] console - (node:1874305) NOTE: We are formalizing our plans to enter AWS SDK for JavaScript (v2) into maintenance mode in 2023. 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: Please migrate your code to use AWS SDK for JavaScript (v3). 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: For more information, check the migration guide at https://a.co/7PzMCcy 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: (Use `node --trace-warnings ...` to show where the warning was created) 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.173] [INFO] console - Installed plugins: ep_align@0.3.73, ep_author_hover@0.3.55, ep_colors@0.0.3, ep_comments_page@1.0.5, ep_draw@0.1.6, ep_embedmedia@0.0.56, ep_envole_casuser@0.0.1, ep_font_size@0.4.57, ep_image_upload@1.0.105, ep_headings2@0.2.59, ep_mathjax@2.0.5, ep_print@0.1.9, ep_set_title_on_pad@0.6.4 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.181] [WARN] console - Please update Etherpad to >=1.8.8 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.181] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issues 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.182] [WARN] console - Can't get git version for server header 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: ENOENT: no such file or directory, lstat '/usr/share/eole/nodejs/etherpad/.git' 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.183] [WARN] console - Can't get git version for server header 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: ENOENT: no such file or directory, lstat '/usr/share/eole/nodejs/etherpad/.git' 
févr. 28 08:39:31 s-lyc-0000a start.sh[1874305]: [2024-02-28 08:39:31.183] [INFO] console - Your Etherpad version is 1.8.7 () 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]: events.js:292 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:       throw er; // Unhandled 'error' event 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:       ^ 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]: Error: listen EADDRINUSE: address already in use 127.0.0.1:9001 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:     at Server.setupListenHandle [as _listen2] (net.js:1313:16) 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:     at listenInCluster (net.js:1361:12) 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:     at doListen (net.js:1498:7) 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:     at processTicksAndRejections (internal/process/task_queues.js:85:21) 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]: Emitted 'error' event on Server instance at: 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:     at emitErrorNT (net.js:1340:8) 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:     at processTicksAndRejections (internal/process/task_queues.js:84:21) { 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:   code: 'EADDRINUSE', 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:   errno: -98, 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:   syscall: 'listen', 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:   address: '127.0.0.1', 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]:   port: 9001 
févr. 28 08:39:33 s-lyc-0000a start.sh[1874305]: } 
févr. 28 08:39:33 s-lyc-0000a systemd[1]: etherpad-apps.service: Main process exited, code=exited, status=1/FAILURE 
févr. 28 08:39:33 s-lyc-0000a systemd[1]: etherpad-apps.service: Failed with result 'exit-code'.

Cela pourrait expliquer les multiples instances de nodejs ? cf capture jointe

Qu'en penses-tu ?

Merci d'avance !
Laurent

Lyc BJP - htop nodejs.jpg Voir (51,6 ko) Laurent Brillard, 29/02/2024 15:57

Révisions associées

Révision 06b15dc2 (diff)
Ajouté par Benjamin Bohard il y a environ 2 mois

Suppression du template obsolète si nécessaire.

Ref #35781

Historique

#1 Mis à jour par Benjamin Bohard il y a environ 2 mois

Concernant les premiers messages, le code SQL de création de la base de données pour etherpad spécifie bien

CREATE DATABASE etherpad DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

Sur le serveur de test 2.8.1 de l’infrastructure EOLE, ces ensembles de caractères et de règles sont bien compilés même si utf8mb3* reste la valeur par défaut pour le serveur mysql.

L’erreur n’apparaît pas dans les logs du service etherpad-apps.

#2 Mis à jour par Benjamin Bohard il y a environ 2 mois

Concernant la seconde erreur rapportée, sur l’impossibilité de démarrer une instance d’etherpad en raison du verrou sur le port 9001, le message de log ne semble pas donner d’information sur la raison de la tentative de démarrer d’autres instances, en premier lieu.

Les avertissements sur l’absence du répertoire .git et la montée de version peuvent être considérés comme normaux.

Le service est configuré en mode redémarrage automatique. Le délai avant redémarrage est la valeur par défaut de 100 ms.

La gestion du service semble conforme à ce qui est attendu, sur le serveur de test :
- démarrage de plusieurs processus node (normal)
- l’arrêt inopiné d’un des deux processus parents provoque le redémarrage sans problème de port
- l’arrêt du service etherpad-apps stoppent bien les processus node.

#3 Mis à jour par Benjamin Bohard il y a environ 2 mois

Les deux problèmes remontés sont liés à une mauvaise gestion de la mise à jour de l’application etherpad et de son intégration avec deux points particuliers:
- la base n’est pas reconstruite lors de la migration et le "default_character_set_name" et le "default_collation_name" n’ont pas évolué ;
- le passage de pm2 à systemd ne s’assure pas de la suppression du template etherpad-pm2.json (/etc/pm2/etherpad.json).

Pour le premier problème, les commandes suivantes ont été testées sur un serveur le présentant :

ALTER DATABASE etherpad CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin;
ALTER TABLE store CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; 

Les tables "etherpads" et "favoris" sont peut-être à modifier également (utilisées directement par etherpads ou simplement un plugin ?).

#4 Mis à jour par Benjamin Bohard il y a environ un mois

  • Tracker changé de Demande à Tâche
  • Assigné à mis à Benjamin Bohard
  • Tâche parente mis à #35848

#5 Mis à jour par Benjamin Bohard il y a environ un mois

  • Projet changé de etherpad à Envole
  • Statut changé de Nouveau à À valider

#6 Mis à jour par Benjamin Bohard il y a environ un mois

  • Statut changé de À valider à En cours

Formats disponibles : Atom PDF