# CR-2023-03-17 | Synapse | Tedomum.net ## Très courte description Infra | Debug | Synapse - Pic d'utilisation CPUs ## Courte description > _À L'occasion d'une session improvisée de **documentation croisée** : kaiyou debug l'instance synapse de (tedomum.net) qui rencontre des pics CPU. reminec prends des notes pour engrenger du savoir sur synapse / Matrix._ ## Description ### Salons #Synapse **#Synapse** modèlise la **relation** entre les **salons** via un **Graphe Orienté Acyclique** (DAG)[Voir plus bas]. Celui-ci se voit **distribué** et **répliqué** sur les différents serveurs. > ⚠️ De temps en temps, ce processus peut occasionner des nécessités d'**opérations de maintenance**. ![Schéma de Graphe Orienté Acyclique](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Tred-G.svg/220px-Tred-G.svg.png) _Ne boucle pas sur lui même (Ex: les noeuds ne peuvent former un cercle)_ Voir [Wikipedia - Graphe Orienté Acyclique](https://fr.wikipedia.org/wiki/Graphe_orient%C3%A9_acyclique) #### En savoir plus * #Synapse Room DAG Concept (https://github.com/matrix-org/synapse/blob/develop/docs/development/room-dag-concepts.md) * #Matrix - Rooms (https://spec.matrix.org/unstable/rooms/) ### Opérations de maintenance #### Nettoyage des 'extremites' des salons #Synapse peut rencontrer quelques défauts dus à la nature distribuée du **DAG** répliqué. Des **pics de CPUs** interviennent lors de la résolution d'état des salons (room). Une opération de maintenance peut être nécessaire. Pour récupérer **la liste des salons à nettoyer**, executer cette requette SQL : ```sql select room_id, count(*) c from event_forward_extremities group by room_id order by c desc limit 20; ``` Puis appeler l'API dédiée à cette effet ```sh synadm DELETE 'v1/rooms/!fzfHhoTplYBEXfWOaI:matrix.org/forward_extremities' ``` ### Bug connu #### #Synapse - 'Extremites' des salons qui grossissent Status : Ouvert ##### Description _Le souci est toujours celui-là : https://github.com/matrix-org/synapse/issues/1760_ Il y a toujours des **défauts** dus à la nature distribuée du DAG répliqué, et l'algo de résolution d'état pour une room qui **explose en performances quand le nombre d'extrémités** (occurrences du défaut si l'on veut) **grandit**. ##### Correction * **opération de maintenance** régulière : Nettoyage des extremities des salons ##### Détection * pic de CPUs ### Définitions #### Graphe Orienté Acyclique **English** : _Directed acyclic graph_ Grosso modo un DAG c'est un arbre dont les branches peuvent se croiser, mais qui va dans une direction globale et ne boucle pas sur lui même. [Illustration d'un DAG Graphe Orienté Acyclique] ##### Exemples Un historique git. ##### En savoir plus https://fr.wikipedia.org/wiki/Graphe_orient%C3%A9_acyclique ## Licenses CC-BY-SA ## Auteurices * kaiyou @ acides.org (Tedomum.net) * reminec @ acides.org (Tedomum.net) ## Versions ### v1.0.1 _Date: 18 mars 2023 | Temps : 5min_ * Corrections mineurs sur le formatage ### v1.0.0 _Date : 17 mars 2023 | Temps rédaction : 1h_ * Initialisation du document & formatage