Ağ Gecikmesini Optimize Etme
Kısa Özet
Gecikme = zincir boyunca küçük gecikmelerin toplamı. İyileştirme sistematik olarak gerçekleştirilir: "şerbetçiotu" (Anycast/CDN) azaltın, RTT'yi (routes/QoS) azaltın, "cıvata" (DNS/TLS/TCP) azaltın, kuyrukları kısa tutun (AQM/ECN), baytları en aza indirin (sıkıştırma/önbellek) ve sürekli olarak p95/p99 ölçün. Ölçümler olmadan herhangi bir optimizasyon faldır.
Gecikme bütçesi: Hangi gecikmeden oluşur
TTFB'nin ayrışmasını basitleştirelim (İlk Bayt Zamanı):
TTFB ≈ t_DNS + t_connect + t_TLS + t_queue + t_routing + t_app + t_first_byte
Ubi:
- t_DNS - ismin çözünürlüğü.
- t_connect - L4 kuruluşu (TCP/QUIC).
- t_TLS - TLS el sıkışma.
- t_queue/t_routing - kuyruklar/geçişler (arabelleğe alma, aşırı yükleme, NAT).
- t_app - ilk bayta kadar sunucu işleme.
Amaç, her dönem için bir SLO belirlemek ve düzenli olarak kontrol etmektir.
SLO/metrikler
DNS p95: Yerel olarak ≤ 20-30 ms, küresel olarak ≤ 80-120 ms.
TCP connect p95: Bölgesel olarak ≤ 80-120 ms, bölgesel olarak ≤ 200-250 ms.
TLS el sıkışma p95: ≤ 80-120 мс (с OCSP zımbalama, devam).
TTFB p95 (statik): Bölgesel olarak ≤ 120-150 ms.
TTFB p95 (API): ≤ 200-300 ms.
Jitter p95 (UDP/RT): ≤ 15-30 мс; Kayıp ≤ 0. 1–0. 3%.
Uyarılar: p95/p99 artış, 'SYN yeniden çalışır' dalgalanma, 'devam' düşüş, 'ECN CE' veya 'paket kaybı' artış.
DNS Hızlı Başlangıç
Anycast otoriteleri + yakın özyinelemeler (gerekirse DoH/DoT).
Dinamik isimler için kısa TTL (60-300 s); Negatif-TTL kontrol altında.
Uygulamanın yanındaki DNS önbelleği; 'prefetch' sıcak kayıtlar.
Gereksiz CNAME> CNAME> A/AAAA hareketlerini hariç tutun.
TLS/HTTP: daha az el sıkışma, daha hızlı oturumlar
TLS 1'i açın. 3, OCSP zımba, CA kısa zincirler.
Oturum yeniden başlatma (biletler/kimlikler) и ALPN ('h2', 'h3').
HTTP/2: çoğullama, daha az bağlantı - p95'ten daha düşük.
HTTP/3 (QUIC): 0-RTT (sadece idempotent), daha iyi kayıp/jitter direnci.
Preconnect/Prewarm (edge/client): Önceden sıcak alanlar için açık bağlantılar.
Taşıma: TCP vs QUIC ve çekirdek yığını
TCP
Modern Tıkanıklık Kontrolü: BBR v2 (veya konservatifse CUBIC).
Hızlı yeniden iletim için RACK/TLP; SACK'i etkinleştir.
ECN + AQM (CoDel/FQ_CoDel): arabellek bloğunu ve titreşimi azaltır.
TCP Hızlı Açık - durum değiştiren isteklerden kaçının; Faydası tartışmalıdır.
QUIC (HTTP/3)
TCP + TLS + HTTP/2 ile karşılaştırıldığında daha az "kafa kilidi".
Yeniden sipariş/kayıplara karşı dirençli; Uygulamayı güncelleyin (örneğin, Envoy/HAProxy with H3).
Monitör UDP/443 ve MTU/parçalanma.
MTU/PMTUD ve parçalanma
Tek uçtan uca MTU; Tüneller için (IPsec/WireGuard/VXLAN), ek yükü göz önünde bulundurun.
PMTUD ve ICMP "Parçalanma gerekli" özelliğini etkinleştirin.
QUIC için - maksimum datagramı izleyin ve çevre üzerinde ICMP kesmeyin.
Yönlendirme ve Yol Fiziği
Genel IP API/kenar cepheleri için Anycast.
Geo/Latency yönlendirme (GSLB) + sağlık kontrolleri.
Fabrikada ECMP ve BFD (Yaprak-Omurga) <1 s kötü izleri ortadan kaldırmak için.
Kullanıcı konsantrasyon bölgelerinde aplink/feast'leri (IX) hizalayın.
Kuyruklar ve QoS: Arabellekleri kısa tutun
Sınıflar: Gerçek zamanlı (RT/VoIP), etkileşimli (API), toplu (yedeklemeler/ETL).
LLQ/WRR, API/ödemelerin toplu olarak önceliklendirilmesi.
Kenar kuyruklarında ECN (CE işareti) + AQM (CoDel/FQ_CoDel).
Kesme/aktarma yedeklemeleri ve "pik dakika'dan büyük çürükler.
NAT, proxy ve orta kutular
NAT/filtre basamaklarını en aza indirin.
Durum bilgisi orta kutusu, yol asimetrisi için kritik öneme sahiptir: 5-tuple, pin-ning iş parçacıkları üzerinde denge.
Uzun ömürlü bağlantılar için kalıcı destek ve makul boşta kalma süreleri (gRPC/WebSocket).
Önbellek ve veri yerleşimi
CDN/origin-shield/katmanlı-cache - orijine daha az yolculuk.
Sürümlü varlıklar (değişmez, 1 yıl).
Yarı dinamikler için kısa TTL + 'bayat-while-revalidate'.
Coğrafi yerleştirme: Sıcak veriler kullanıcıya daha yakındır (read-replica/edge-KV) ve "gerçeğin kaynağına" yazar.
Uygulama düzeyinde optimizasyon
İstek sayısını azaltın (push bundling/HTTP/2 artık moda değil - prefetch/preconnect daha iyi).
Yükü azaltın: sıkıştırma (Brotli), web görüntü formatları, ikili protokoller (gRPC).
Idempotence isteyin - güvenli geri çekilmeler ve agresif zaman aşımları.
TTFB'yi azaltmak için Async/streaming (SSE/gRPC streaming).
Gözlemlenebilirlik: neyin ölçüleceği
İstemci telemetri (RUM): DNS/connect/TLS/TTFB, Geo/ASN, cihaz.
Ağ: RTT, loss, jitter, ECN CE/ECT (0/1), arayüz kuyrukları, hatalar/taşmalar.
Транспорт: yeniden iletimler, sıra dışı, cwnd/BBR durumu, el sıkışma istatistikleri, devam.
L7: p50/p95/p99, hata oranı, yük boyutu, rota histogramları/PoP.
Metrikleri bölgeye/ASN/taşıyıcıya göre segmentlere ayırın - burası sıcak noktaların gizlendiği yerdir.
Mini oyun kitapları
1) Hızlı denetim p95
1. RUM'dan bir gecikme bütçesi (DNS/TLS/connect/TTFB) oluşturun.
2. PoP/ASN tarafından ağ metriklerine (RTT/loss/ECN) eşleme.
3. Eğer 'connect've' TLS 'baskın ise - preconnect/resumption/HTTP/3 etkinleştirin.
4. 'TTFB' yüksekse - önbellek/kenar/çoğaltma ve uygulama optimizasyonu.
2) Kayıp/jitter spike
1. Uplink/arabirimleri (damla/kuyruklar) kontrol edin.
2. AQM'yi etkinleştirin/düzeltin (FQ_CoDel), toplu sınıfı azaltın.
3. BFD/ECMP yolunu kontrol edin, flep bağlantısını dışlayın.
4. Müşteriler için, geçici olarak geri ödemeleri kaldırın ve aradaki süreyi azaltın.
3) Bölgesel bozulma
1. GSLB'yi komşu PoP'ye geçirin; Bozulmuş Anycast/32 geri çekin.
2. TTL'yi azaltın, 'bayat-while-revalidate'i etkinleştirin.
3. Durum sayfasına durum gönder, RCA'yı başlat.
4) HTTP/3'ya geçiş
1. UDP/443 aç, 'h3' H3/ALPN etkinleştir.
2. A/B: p95 TTFB ve hata oranını karşılaştırın.
3. 'Uç kaybı'/aktif istemciler/cwnd salınımlarını gözlemleyin.
Config beşiği
Nginx (HTTP/2, OCSP, TLS 1. 3, Brotli)
nginx server {
listen 443 ssl http2 reuseport;
ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_stapling on; ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
Compression brotli on; brotli_comp_level 5; gzip on;
Cache static location/static/{
add_header Cache-Control "public, max-age=31536000, immutable" always;
try_files $uri =404;
}
Proxy to API location/api/{
proxy_set_header Connection "";
proxy_http_version 1. 1;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass https://backend;
}
}
Sytl (Linux ağı: ECN/SACK/RACK çekirdek alt sistemi - yaklaşık parametreler)
bash
SACK/RACK/TLP are typically included in modern cores; specify sysctl -w net for your distribution. ipv4. tcp_sack=1 sysctl -w net. ipv4. tcp_ecn=1 sysctl -w net. ipv4. tcp_fastopen=0 # carefully with TFO sysctl -w net. core. default_qdisc=fq_codel sysctl -w net. ipv4. tcp_congestion_control=bbr
QoS (Cisco tarzı, konsept)
class-map match-any REALTIME match dscp ef class-map match-any INTERACTIVE match dscp af31 af21 class-map match-any BULK match dscp cs1 policy-map WAN-QOS class REALTIME priority percent 10 class INTERACTIVE bandwidth percent 50 class BULK bandwidth percent 20 random-detect ecn
Süreçler ve operasyonel uygulamalar
Kapasite planlaması: Yoğun saatlerde kapasite marjı ≥ %30.
Değişim-kontrol: Rota/PoR/ağ geçitlerinin kanarya değişiklikleri.
Düzenli PMTUD testi ve ICMP kontrolü.
Yol dokümantasyonu: MTU'ların sahibi olduğu NAT/proxy/AQM/QoS nerede.
L7 ve ağ geri izlemeleri arasındaki zaman aşımı anlaşması.
iGaming/fintech'e özel
Etkinlik zamanı (maçlar/turnuvalar): CDN/PoP'yi ısıtmak, kritik alanlara önceden bağlanmak, yeniden başlama havuzunda geçici artış, botlar için "gri" rotalar.
Ödeme adımları: özel QoS sınıfı, Anycast uç noktaları, kısa TLS zincirleri ve katı sürümler/şifreler; Geri çekilmeler sadece idempotent.
Bölgesel kısıtlamalar/PSP: coğrafi yönlendirme + ASN/IP beyaz listeleri; sabit çıkış havuzları.
Mobil ağlar: ChaCha20-Poly1305 tercihi (müşterilerde zayıf AES-NI ile), agresif sıkıştırma ve HTTP/3.
Uygulama kontrol listesi
- Gecikme bütçesi (DNS/TLS/connect/TTFB) ve bağlantı başına SLO.
- Anycast/Genel API'ler/kenar için coğrafi yönlendirme, yedek PoP'lar.
- TLS 1. 3, OCSP zımbalama, yeniden başlatma ≥ %70, HTTP/2/3 dahil.
- BBR + FQ_CoDel, ECN, SACK; PMTUD çalışır, ICMP bloke edilmez.
- Zincir boyunca tek bir MTU, tünellerin tepesini hesaplar.
- QoS: gerçek zamanlı/etkileşimli/toplu, aşırı yük arayüzleri üzerinde AQM sınıfları.
- CDN/Katmanlı önbellek/Origin-shield; Sürümlenmiş varlıklar ve SWR.
- RUM + Geo/ASN ağ ölçümleri; p95/p99/ECN/losses uyarır.
- Playbooks: Bölgenin bozulması, kayıplarda artış, trafik transferi.
Yaygın hatalar
ICMP/PMTUD engelleme - parçalanma/yeniden gönderme ve yüksek p95.
AQM olmadan "Kalın" tamponlar - tampon bloğu ve jitter.
Uzun CA zincirleri ve OCSP zımbalama yok - pahalı TLS.
Durumsal filtreler için NAT aşamaları ve asimetrisi - geri çekilmeler/zaman aşımları.
Aşırı 'Vary'/sürüm içermeyen varlıklar - düşük isabet oranlı CDN.
Hiçbir QoS segmentasyonu - API, zirvede yedeklerle rekabet etmez.
Toplam
Gecikme optimizasyonu, ağ mühendisliği, uygun taşıma ve DNS/TLS/önbellek üzerindeki "cıvata" tasarruflarının bir kombinasyonudur. Anycast/Geo-routing, TLS 1'i uygulayın. 3 + yeniden başlatma, HTTP/3, BBR + FQ_CoDel/ECN, MTU'yu müzakere etme, QoS ve SLO'yu ayarlama, p95/p99'u ölçme ve oyun kitaplarını otomatikleştirme. Daha sonra kullanıcılar en "yanan" dakikalarda bile hızlı bir yanıt alacaklar ve platform - öngörülebilirlik ve güvenlik marjı.