GH GambleHub

Yük testi ve stres profilleri

Kısa Özet

Yük testi, gerçekçi ve aşırı senaryolar altında performans ve esnekliğin bir sistem testidir. Başarının temeli: doğru trafik modeli (açık ve kapalı), sabit SLO, saf metrik (gecikme/verim/hatalar/doygunluk), temsili veriler, otomasyon ve tekrarlanabilirlik. Sonuç bir "RPS rakamı'değil, bir çözümdür: darboğazlar nerede, performans maliyeti ne kadar, başarısızlık eşiği nerede ve nasıl taşınır.

SLO/SLI ve hedef metrikleri

SLO (örnek): p95 API ≤ 250 ms, p99 ≤ 600 ms; Hata ≤ 0. %3/30 gün.
SLI: gecikme (p50/p95/p99), işlem hacmi (RPS/CPS/QPS), doygunluk (CPU/heap/GC/FD/conn), ошибки (5xx, zaman aşımı), очереди (derinlik/gecikme), DB (kilitler, yavaş sorgular), кэш (isabet oranı).
Hata ve Doygunluk tetikleyicileri (örneğin, CPU> %75 veya kuyruk derinliği> X).

Test türleri

1. Baseline/Benchmark - tek servis/uç nokta, "ideal" koşullar.
2. Yük - gerçekçi "çalışma günü" + rampa yukarı/rampa aşağı.
3. Stres - yükü bozulma ve kesme noktası sabitlemesine yükseltin.
4. Spike - keskin atlama (saniye/dakika içinde x2-x10).
5. Islak/Dayanıklılık - uzun çalışma (8-72 saat): bellek sızıntıları, gecikme sürüklenme.
6. Kapasite - Performans eğrisi ve kapasite planlaması için adım yükü.
7. Degradation/Chaos-mix - load + partial failures (slow database, cache drop, "collapsed" applink).

Trafik modelleri: Açık vs Kapalı

Açık model (İnternet için daha gerçekçi): Kullanıcılar λ yoğunlukta gelir (Poisson benzeri akış). Sistem yavaşlarsa, "dondurulmuş'değil, istekler toplanır.
Kapalı model - düşünme süresine sahip sabit sayıda sanal kullanıcı (VU). Gecikme arttığında, RPS yapay olarak düşer - dikkatli bir şekilde sonuçlarla.
Öneri: Ön uç API'ler için açık model (k6 'arrival-rate') kullanın, dahili senkron komut dosyaları için - kapalı ile birleştirin.

Profilleri yükle (şablonlar)

"Normal gün": temel arka plan + günlük dalgalanmalar.
"Zirve olayı": Başlangıçtan 10-30 dakika önce (ısınma), başlangıçta keskin başak, plato, kuyruk.
"Turnuva/akış": merdiven basamakları, aralıklarla tekrarlanan zirveler.
"Altyapı bozulması": Önbelleğin yarısı boş, bir bölge kapalı, PSP gecikmesi artıyor.
"Yük devretme": trafik 1-5 dakika içinde korumaya akar; Otomatik ölçekli/HPA/Yeniden deneme fırtınalarını kontrol etme.

Çevre verileri ve hazırlık

Test verileri: gerçekçi kardinalite (sağlayıcılar, para birimleri, ülkeler), kirli alanlar, sorgu dağılımları (Pareto/Zipf).
Sırlar/PII: Anonimleştirme; Anahtarlar/PSP - sandbox.
Çevre: özel perf stand, entegrasyonlardan izolasyon (mock/stab), sabit versiyonlar.
Gözlemlenebilirlik: metrikler (Prometheus), loglar (Loki/ELK), izler (OTel). Yanıtlarda yapı kimliği kaydedin.

Anti Fırtına Retrays ve Idempotence

Retrai sadece idempotent işlemler için; Yeniden deneme bütçesini ayarlayın (örneğin trafiğin ≤ %10'u).
Üstel geri dönüş + jitter; "çöken" özdeş GET'ler.
Ödemeler için - idempotent anahtarlar ve açık durumlar.
Gürleyen sürüye karşı koruma: önbellek kilitleri, SWR, yerel semaforlar.

Araçlar ve Desenler

K6 (komut dosyası oluşturma, açık model, iyi raporlama), Locust (Python komut dosyaları), Gatling (Scala), JMeter (çok çeşitli protokoller).
Protokoller: HTTP/1. 1/2/3, gRPC, WebSocket, TCP/UDP; Push sunucusu "GET olarak" test etmeyin.
Trafik oluşturma: jeneratörlerin yatay ölçeklendirilmesi, ağ darboğazının kontrolü.
Profillerin kaldırılması: ppprof/async-profiler/ebpf yük altında, OTel yolları.

Mini örnek k6 (açık model + başak):
javascript import http from 'k6/http';
import {check, sleep} from 'k6';

export const options = {
scenarios: {
warmup: { executor: 'ramping-arrival-rate', startRate: 50, timeUnit: '1s',
preAllocatedVUs: 200, stages: [ { target: 200, duration: '5m' } ] },
spike: { executor: 'constant-arrival-rate', rate: 1200, timeUnit: '1s',
preAllocatedVUs: 2000, startTime: '6m', duration: '3m' }
},
thresholds: {
http_req_failed: ['rate<0. 3%'],
http_req_duration: ['p(95)<250', 'p(99)<600']
}
};

export default function () {
const res = http. get(`${__ENV. BASE_URL}/api/v1/catalog? c=${Math. floor(Math. random()1000)}`);
check(res, { 'status is 200': (r) => r. status === 200 });
sleep(Math. random()0. 9) ;//think time (for closed parts of the script)
}

Prosedür

1. Hipotez - hangi darboğazların muhtemel olduğu (CPU, DB, önbellek, ağ, TLS, GC).
2. Profil - senaryolar/rotalar, trafik paylaşımları, modeller (açık/kapalı), veriler.
3. Isınma> önbellek/bağlantılar/TLS/yorumlayıcılar.
4. ^ aşamasının hedef yoğunluğa yükseltilmesi.
5. Plato - kararlı metriklerin ve izlerin toplanması.
6. Stres/düşüş - bir kırılma noktası bulun, otomatik ölçeği gözlemleyin.
7. Analiz - ilişkili metrikler, flamegraph, rapor ve değişim planı.
8. Repruf - CI (Bölge Perf) boru hattı boyunca tekrarlayın.

Sonuçların analizi

Yük - gecikme/hata eğrisi: dirsek (kapasite) arıyor.
Arıza gecikmesi: ağ (DNS/TLS/connect), proxy, uygulama, veritabanı, harici aramalar.
Doygunluk: CPU> %75-85, GC duraklatma> p95, I/O bekler, görev kuyruğu.
Esneklik: Otomatik ölçek reaksiyon süresi (HPA/KEDA), soğuk başlangıç, önbellek ısınma.
Maliyet: Hedef SLO'da $/1000 RPS, en yüksek bütçe tahmini.

Mühendislik Uygulamaları

Bozulma göstergeleri: "kuyruklar" p99, kuyruk büyümesi, isabet oranı düşüşü, yeniden ödeme girişimlerinin büyümesi.
Karıştırıcıları hariç tutun: dosya tanımlama limitleri, sysctl, conn-pool, 'reuseport', TLS zincirleri, OCSP.
DB: indeksler/planlar/sorgu önbelleği, bağlantı havuzu, toplu işlemler, üreticiler üzerinde geri baskı.
Önbellekler: boyut/tahliye politikası, kısayol tuşları, çoğaltma.
Ağ/kenar: HTTP/2/3, % resumption≥70, Brotli, CDN önbellek anahtarı, katmanlı önbellek.

Yük altında gözlemlenebilirlik

Metrikler: sistem (CPU/mem/IO), çalışma zamanı (GC/heap), ağ (RTT/loss/ECN), L7 (p95/99, 5xx/429), kuyruklar, veritabanı kümeleri/önbellek.
Yollar: "kuyruklar" (kuyruk tabanlı), yapı-id/kanarya işaretleri üzerinde örnekleme içerir.
Günlükler: hataların hacim sınırlaması ile toplanması ("forDOSor" log-pipeline olmaması için).
Deneyler: özellik bayrakları ve yapılandırmalar rapora kaydedilmelidir.

Otomasyon ve CI/CD

CI'daki perf işleri (duman 3-5 dakika, gece 30-60 dakika, haftalık ıslatma).
Tolerans sınırları: gecikme/hatalar/kaynaklar - regresyonda "yapı kırın".
Artifaktlar: grafikler, flamegraflar, profiller, JSON raporları (k6/jtl).
Veri ve komut dosyalarının sürümü, perf komut dosyalarının PR incelemesi.

iGaming/fintech'e özel

Turnuvalar/maçlar: spike + plato; TLS/DNS/CDN ısınma, artan havuz sınırları, botlar için gri yollar.
Ödemeler/PSP: sandbox limitleri, idempotency, katı zaman aşımları; Degrade-mode (dizin önbelleği, kuyruklar) denetleniyor.
Jackpots/events: atomicity and consistency, no takes, load on RNGs/leadboards.
Anti-fraud/AML: load on rules/ML puanlama, geri baskı, olay tekilleştirme.
Düzenleyici: zirvelerde metrikleri ve sürümleri günlüğe kaydetme, denetim için raporlar.

Denetim listesini başlat

  • Sabit SLO/SLI ve kırmızı çizgiler (hata/gecikme/doygunluk).
  • Yük senaryoları ve profilleri onaylanmıştır (açık/kapalı, başak/ıslanma/stres).
  • Veri gerçekçi, PII maskeli, entegrasyonlar sanal/sahte.
  • Gözlemlenebilirlik hazır: metrikler/izler/günlükler, serbest bırakma etiketleri.
  • Sistem yapılandırmaları (ulimit/sysctl/pools) belgelenmiştir.
  • Otomatik ölçeklendirme/önbellek ısınma planı ve geri alma kriterleri.
  • Eşik uyarıları ve çağrı planı.
  • Raporlama şablonu (çizelgeler, sonuçlar, eylemler) hazırlanmıştır.

Yaygın hatalar

Kapalı model testi'yeşil'bir sonuç üretir ve ürün düşer (açık modeli görmezden gelemezsiniz).
Temsili olmayan veriler (bir para birimi/bir sağlayıcı) - yanlış sonuçlar.
Sıfır hazırlama: soğuk önbellekler/TLS/bağlantılar - başlangıçta aşırı gecikme.
Sınırsız Retrai - fırtına ve kaskad düşer.
Tüm hizmetler için aynı profiller - gerçek "sıcak noktaları" atlamak.
Islak koşuların yokluğu - bellek sızıntıları ve sürüklenme görünmez.
Opak sonuçlar: hiçbir iz/flamegraph yok - darboğaz bulunamıyor.

Mini oyun kitapları

Bir kesme noktası tanımlama

1. Her 5-10 dakikada bir yükün %10-20'lik adımları. 2) p95'in keskin bir şekilde yükseldiği ve hataların> SLO olduğu anı düzeltin. 3) CPU/DB/önbellek profillerini kaldırın. 4) Optimizasyon planı ve tekrarı.

Retray fırtınalarında dizginleme

1. Yeniden deneme bütçesini kısıtlayın ve backoff + jitter özelliğini etkinleştirin. 2) Request-collapsing/SWR girin. 3) "degrad modu'na izin ver (sınırlı işlevsellik). 4) Idempotensi iki kez kontrol edin.

Zirve etkinliği (turnuva) - ön plan

1. CDN/DNS/TLS/havuzlarını ısıtın. 2) Hedef HPA'yı artırın, rezerv hazırlayın. 3) Botlar için ayrı oran limitleri. 4) Tepe modlu gösterge panoları, çağrı üzerine iletişim köprüsü.

Soak-night

1. 8-12 saat sabit yük. 2) Monitör yığını/FD/conn/GC duraklamaları. 3) p95 delta ve isabet oranını kontrol edin. 4) Sızıntıları ve sürüklenmeyi düzeltin.

Sonuç

Yük testi, bir "RPS yarışı'değil, bir mühendislik karar verme sürecidir. Gerçek profilleri (özellikle açık modeli) modelleyin, SLO'ları yakalayın, metrikleri ve izleri alın, performans dizini arayın ve performans maliyetini sayın. Koşuları otomatikleştirin, fırtına karşıtı geri çekilmeleri sürdürün ve zirve etkinliklerini planlayın - bu şekilde platform en stresli anlarda öngörülebilir ve istikrarlı olacaktır.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.