Contenção de trava do ClickHouse: Um gargalo de desempenho de um ano

2025-03-21

A Tinybird enfrentou um problema de um ano com utilização extremamente baixa da CPU em um de seus clusters do ClickHouse durante períodos de pico de carga. A causa raiz foi identificada como contenção de trava do Context. Ao adicionar uma métrica `ContextLockWaitMicroseconds` para monitorar os tempos de espera da trava e redesenhar o mecanismo de trava do Context – substituindo uma única trava mutex global por travas mutex de leitura-escrita – o desempenho melhorou significativamente. O artigo detalha o uso da análise de segurança de thread do Clang para depurar e resolver problemas de concorrência, juntamente com os resultados de benchmark mostrando um aumento de 3x no QPS e ganhos substanciais na utilização da CPU.

Leia mais
Desenvolvimento