Contensión de bloqueo de ClickHouse: Un cuello de botella de rendimiento de un año

2025-03-21

Tinybird experimentó un problema de un año con una utilización extremadamente baja de la CPU en uno de sus clústeres de ClickHouse durante los períodos de carga máxima. La causa raíz se identificó como contención de bloqueo de Context. Al agregar una métrica `ContextLockWaitMicroseconds` para monitorear los tiempos de espera de bloqueo y rediseñar el mecanismo de bloqueo de Context, reemplazando un solo mutex global con mutexes de lectura-escritura, el rendimiento mejoró significativamente. El artículo detalla el uso del análisis de seguridad de subprocesos de Clang para depurar y resolver problemas de concurrencia, junto con los resultados de referencia que muestran un aumento de 3x en QPS y ganancias sustanciales en la utilización de la CPU.

Leer más
Desarrollo