ClickHouse-Sperrkonflikt: Ein jahrelanger Performance-Engpass
2025-03-21
Tinybird hatte ein Jahr lang ein Problem mit extrem niedriger CPU-Auslastung in einem ihrer ClickHouse-Cluster während Spitzenlastzeiten. Die Ursache wurde als Context-Sperrkonflikt identifiziert. Durch Hinzufügen einer Metrik `ContextLockWaitMicroseconds` zur Überwachung der Sperrwartezeiten und durch Neugestaltung des Context-Sperrmechanismus – Ersetzen eines einzelnen globalen Mutex durch Lese-Schreib-Mutexe – wurde die Leistung deutlich verbessert. Der Artikel beschreibt detailliert die Verwendung der Clang-Thread-Sicherheitsanalyse zum Debuggen und Beheben von Nebenläufigkeitsproblemen sowie Benchmark-Ergebnisse, die eine 3-fache Steigerung des QPS und erhebliche Verbesserungen der CPU-Auslastung zeigen.
Entwicklung
Nebenläufigkeit