ClickHouse/docs/tr/operations/optimizing_performance/sampling_query_profiler.md
2020-04-24 12:50:22 +03:00

3.7 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true e8cd92bba3 54 Sorgu Profili Oluşturma

Örnekleme Sorgusu Profiler

ClickHouse, sorgu yürütülmesini analiz etmeyi sağlayan örnekleme profiler'i çalıştırır. Profiler kullanarak sorgu yürütme sırasında en sık kullanılan kaynak kodu yordamları bulabilirsiniz. Boşta kalma süresi de dahil olmak üzere harcanan CPU zamanını ve duvar saati zamanını izleyebilirsiniz.

Profiler kullanmak için:

  • Kurulum trace_log sunucu yapılandırması bölümü.

    Bu bölüm yapılandırır trace_log profiler işleyişinin sonuçlarını içeren sistem tablosu. Varsayılan olarak yapılandırılmıştır. Bu tablodaki verilerin yalnızca çalışan bir sunucu için geçerli olduğunu unutmayın. Sunucu yeniden başlatıldıktan sonra ClickHouse tabloyu temizlemez ve depolanan tüm sanal bellek adresi geçersiz hale gelebilir.

  • Kurulum query_profiler_cpu_time_period_ns veya query_profiler_real_time_period_ns ayarlar. Her iki ayar da aynı anda kullanılabilir.

    Bu ayarlar, profiler zamanlayıcılarını yapılandırmanıza izin verir. Bunlar oturum ayarları olduğundan, tüm sunucu, bireysel kullanıcılar veya kullanıcı profilleri, etkileşimli oturumunuz ve her bir sorgu için farklı örnekleme sıklığı elde edebilirsiniz.

Varsayılan örnekleme frekansı saniyede bir örnektir ve hem CPU hem de gerçek zamanlayıcılar etkindir. Bu frekans, ClickHouse kümesi hakkında yeterli bilgi toplamaya izin verir. Aynı zamanda, bu sıklıkla çalışan profiler, ClickHouse sunucusunun performansını etkilemez. Her bir sorguyu profillemeniz gerekiyorsa, daha yüksek örnekleme frekansı kullanmayı deneyin.

Analiz etmek trace_log sistem tablosu:

  • Yüklemek clickhouse-common-static-dbg paket. Görmek DEB paketlerinden yükleyin.

  • Tarafından iç gözlem işlevlerine izin ver allow_introspection_functions ayar.

    Güvenlik nedenleriyle, iç gözlem işlevleri varsayılan olarak devre dışı bırakılır.

  • Kullan... addressToLine, addressToSymbol ve demangle iç gözlem fonksiyonları ClickHouse kodu işlev adları ve konumlarını almak için. Bazı sorgu için bir profil almak için, trace_log Tablo. Bireysel fonksiyonları bütün yığın izleri ya da veri toplama yapabilirsiniz.

Görselleştirmeniz gerekiyorsa trace_log bilgi, deneyin flamegraph ve speedscope.

Örnek

Bu örnekte biz:

  • Filtre trace_log bir sorgu tanımlayıcısı ve geçerli tarihe göre veri.

  • Yığın izleme ile toplama.

  • İç gözlem işlevlerini kullanarak, bir rapor alacağız:

    • Sembollerin isimleri ve karşılık gelen kaynak kodu işlevleri.
    • Bu işlevlerin kaynak kodu konumları.
SELECT
    count(),
    arrayStringConcat(arrayMap(x -> concat(demangle(addressToSymbol(x)), '\n    ', addressToLine(x)), trace), '\n') AS sym
FROM system.trace_log
WHERE (query_id = 'ebca3574-ad0a-400a-9cbc-dca382f5998c') AND (event_date = today())
GROUP BY trace
ORDER BY count() DESC
LIMIT 10
{% include "examples/sampling_query_profiler_result.txt" %}