102 lines
3.1 KiB
Markdown
102 lines
3.1 KiB
Markdown
|
# 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
|
||
|
|
||
|
|