Contention de verrouillage ClickHouse : un goulot d’étranglement des performances d’un an
Tinybird a rencontré un problème persistant pendant un an : une utilisation extrêmement faible du processeur dans l’un de ses clusters ClickHouse en période de forte charge. La cause principale a été identifiée comme une contention de verrouillage Context. En ajoutant une métrique `ContextLockWaitMicroseconds` pour surveiller les temps d’attente de verrouillage et en repensant le mécanisme de verrouillage Context – en remplaçant un mutex global unique par des mutexes lecture-écriture –, les performances se sont considérablement améliorées. L’article détaille l’utilisation de l’analyse de sécurité des threads de Clang pour déboguer et résoudre les problèmes de concurrence, ainsi que les résultats des tests de référence montrant une augmentation de 3x du QPS et des gains substantiels dans l’utilisation du processeur.
Lire plus