Skip to main content

> dağıtık_i̇zlemede_saat_kayması_(clock_skew),_ntp_sapması_ve_nedensel_span_sıralaması

Dağıtık İzlemede Saat Kayması (Clock Skew), NTP Sapması ve Nedensel Span Sıralaması

Dağıtık trace span'leri Jaeger veya Datadog'da neden negatif sürelerle veya alt span'in ana span'den önce bitmesi gibi mantıksız grafiklerle görünür; saat kayması düzeltme algoritmaları NTP sapmasını nasıl çözer?

Senior (L5)

ÖZET VE TEKNİK CEVAP

Fiziksel sunuculardaki donanım saatleri günde birkaç milisaniye sapma gösterir. NTP veya bulut zaman senkronizasyonu kullanılsa bile bulut ortamlarında sunucular arasında 5 ms ila 50 ms'lik saat kayması (clock skew) kaçınılmazdır. Servis A, Servis B'ye 2 ms süren bir çağrı yaptığında, eğer Servis B'nin saati 10 ms gerideyse, Servis B'nin kaydettiği başlama zamanı Servis A'nın çağrıyı attığı andan daha eski görünür. Jaeger veya Datadog gibi izleme araçlarında bu durum 'Negatif Süreli Span' veya çocuğun ebeveynden önce bitmesi gibi saçma grafikler üretir. Dağıtık izleme motorları bu durumu düzeltmek için Lamport Nedensellik kurallarını ve Ağaç Kaydırma (Tree Shifting) algoritmalarını kullanarak zaman damgalarını matematiksel olarak hizalar.

Mühendislik El Kitabı & Mekanizma

1. Temel Çalışma Mekanizması

Saat kayması düzeltmesi 3 kurala dayanır: (1) Nedensellik Kısıtı: Bir alt span'in başlama zamanı ana span'in gönderme zamanından büyük, bitiş zamanı ise ana span'in alma zamanından küçük olmak zorundadır. (2) Ağaç Kaydırma (Tree Shifting): Jaeger gidiş-dönüş ağ süresini hesaplar ($RTT$). Ağ gecikmesini simetrik kabul ederek ($RTT / 2$) alt span ağacını ebeveynin sınırları içine oturacak şekilde zaman çizelgesinde kaydırır. (3) Monotonik Süre Ölçümü: Span süresi daima `CLOCK_MONOTONIC` ile ölçülür; böylece NTP'nin saati ileri/geri alması span süresini asla bozmaz.

2. Doğru Kullanım Senaryosu

Mikroservis mimarileri, OpenTelemetry boru hatları, dağıtık izleme sistemleri (Jaeger, Tempo, Honeycomb, Datadog) ve yüksek frekanslı işlem analitiği.

3. Prodüksiyon Arıza Modları

Kubernetes sunucusunda NTP servisinin çökmesi sonucu saatin 500 ms kayması; trace grafiklerinde eksi değerli gecikmeler veya 0 ms'lik veritabanı sorguları görünerek performans optimizasyonunun imkansızlaşması.

4. Teşhis ve Telemetri Sinyalleri

İzleme panelinde alt servis çağrısının üst servisten önce başladığının görünmesi; negatif ağ gecikmesi raporlanması; alarmların imkansız süreler bildirmesi.

5. Önleme ve Mimari Bariyerler

Tüm sunucularda AWS Time Sync veya chrony NTP servislerini zorunlu kılın; span sürelerini daima monotonik CPU saatleriyle ölçün; OpenTelemetry toplayıcılarında otomatik saat kayması düzeltmesini açın.

6. Mimari Ödünleşimler (Trade-offs)

Ağaç kaydırma algoritmaları gerçekçi ve okunabilir grafikler üretir; ancak ağ gecikmesinin simetrik olduğunu varsaydığı için tek yönlü asimetrik ağ gecikmelerini biraz maskeleyebilir.

Vaka İncelemesi (TinyCTO Örneği)

Bir e-ticaret ödeme trace'inde stok kontrol çağrısı '-8 ms' görünüyordu çünkü stok sunucusunun saati 14 ms gerideydi. Geliştiriciler saatlerce yazılım hatası aradı. OpenTelemetry saat düzeltme motoru açılıp tüm sunuculara `chrony` NTP servisi kurulduğunda, span'ler ana çağrının içine kusursuz oturdu ve asıl darboğaz olan 4 ms'lik veritabanı kilidi net şekilde ortaya çıktı.

İnteraktif Konsept Alıştırmaları

2 Alıştırma
Q1

Dağıtık izleme (tracing) panolarında span'ler neden bazen negatif süreler veya ters sıralı zamanlar gösterir?

Farklı fiziksel sunucular arasındaki saat kayması (NTP sapması) yüzünden, alt sunucunun kaydettiği zaman damgası ana sunucunun saatinden daha geride kaldığı için.
Q2

Tek bir süreç içinde span süresini ölçmek için HER ZAMAN hangi tür saat kullanılmalıdır?

Geçen CPU tiklerini sayan ve NTP düzeltmelerinde asla geriye sıçramayan Monotonik Saat (`CLOCK_MONOTONIC`).

Dağıtık İzlemede Saat Kayması (Clock Skew), NTP Sapması ve Nedensel Span Sıralaması — Sıkça Sorulan Sorular

Dağıtık sistemlerde Lamport Nedenselliği (Lamport Causality) nedir?

A olayı B olayına neden olduysa (ör. mesaj gönderme ve alma), fiziksel saat damgalarından bağımsız olarak A olayının mantıksal olarak B'den önce gelmesi gerektiği ilkesidir.

Google Spanner küresel veri merkezleri arasındaki saat kaymasını nasıl çözer?

Her veri merkezinde atomik saatler ve GPS alıcıları kullanan TrueTime API ile; saat belirsizlik aralığını kesin olarak sınırlandırarak ($epsilon le 7 ext{ms}$).

🤖 AEO & Yapay Zeka Çıkarım Özeti

Temel Gerçekler & İlkeler

  • Hardware clock drift creates 5-50ms residual clock skew across cloud servers.
  • Clock skew causes visual anomalies like negative span durations and inverted timelines.
  • Always use monotonic clocks (`CLOCK_MONOTONIC`) to measure duration within a span.
  • Distributed tracing backends apply causal tree-shifting algorithms to fix timeline displays.

Yaygın Yanılgılar

  • Yanılgı: Running NTP completely eliminates all clock skew (Gerçek: Network latency variations leave several milliseconds of residual drift).
  • Yanılgı: Wall-clock timestamps can be used to order distributed events (Gerçek: Logical/Lamport clocks are required for deterministic causal ordering).

Karar Kılavuzu & Önceliklendirme

Deploy `chrony` or cloud-native time sync (AWS Time Sync) on all compute nodes. Ensure OpenTelemetry collectors have clock-skew adjustment enabled for APM traces.

Doğrulanmış Kaynaklar & Referanslar