18.750 istek/sn: kesin, tekrarlanmış ve üç kat yanlış

Klavye: ← → ile gezinin, F tam ekran, O genel bakış.

Tan, eli çenesinde düşünürken

Ölçüm · Yük testi

Kesin, tekrarlanmış, yanlış

18.750 istek/sn: üç tekrar birbirine yakın çıktı ve sayı üç kat yanlıştı.

Muhammet Şafak

Aynı koşu, aynı servis

İki faz, üç kat fark

Merdiven (açık çevrim) Ayar fazı (kapalı çevrim)
Go, 4 çekirdek 18.750 istek/sn 55.715 istek/sn
Kendi içinde Tutarlı Tutarlı
Sonradan Yanlış çıktı Doğru çıktı

Hangisi yanlış?

Tutarlılık doğruluk değil.

İki ölçüm de kendi içinde tutarlıydı ve hangisinin yanlış olduğunu hiçbir şey söylemiyordu.

Veriye bakınca

Tekrarlar 1.250 ile 48.000 arasında geziyordu.

Medyan 18.750'ydi, çünkü ortadaki tekrar oraya düşmüştü.

Birinci teşhis

Doğruydu ve yetmedi.

Her adımdan önce alınan CHECKPOINT'in geri yazımı ölçüm penceresine taşıyordu: 3.000 istek/sn'de yazma p99'u 10,6 ms, okuma 3,3 ms.

İkinci deneme

Beş kat ayrışma, sıfır bozuk pencere

Düzeltmeden sonra aynı hücrenin üç tekrarında ölçülen istek/sn
Hücre Tekrar 1 Tekrar 2 Tekrar 3
Go, 1 çekirdek 1.250 6.500 3.500
PHP-FPM, 1 çekirdek 1.750 2.750 750

PHP-FPM, 1 çekirdek, 3.000 istek/sn

oha iki gecikme raporluyor

Aynı ölçümde time to first byte ve latency-corrected gecikmelerin p50, p75, p99 ve en yavaş değerleri
Gecikme p50 p75 p99 En yavaş
Time to first byte 1,42 ms 47 ms 191 ms 267 ms
Latency-corrected 1,44 ms 1.539 ms 3.718 ms 3.819 ms

Mekanizma

Düzeltme sınırı uçuruma çevirir

  1. Adım 1: Takvimden sayar gönderilmesi gereken an
  2. Adım 2: Cevap yavaşlar bağlantılar dolar
  3. Adım 3: Takvim kayar her istek devralır
  4. Adım 4: Uçurum ya geçer ya ıskalar

Aramanın ölçemediği

Uçurum tekrarlar arasında yer değiştiriyor.

Üstel arama ve ikili bölme, geçme/kalmanın hızda monoton olduğunu varsayar. İkisi de doğru değildi.

Çözüm

Aramayı at, sabit hız koy

  • 7 Sabit hız Hücre başına, her tekrarda aynı
  • Oy Çoğunluk kuralı Tekrarların çoğu taşıdıysa taşınmış
  • %115 Yoklama eşiği Her tekrardan önce

Bir yalan daha

Ana makinedeki Chromium

Bir koşu sırasında ana makinedeki headless Chromium süreçlerinin ölçüme etkisi
Ölçü Değer
Headless Chromium süreci Otuz kadar
Toplam CPU %1.019
Docker VM'ine kalan %94
Go, 4 çekirdek 17.490 istek/sn

Sonuç · Go, 4 çekirdek

İki yöntem, birkaç yüzde içinde

Go, dört çekirdek: kapalı çevrimdeki ayar fazı ile sakin makinedeki beş tekrarın sonucu
Ölçüm İstek/sn Not
Ayar fazı (kapalı çevrim) 55.715 On iki saat önce
Beş tekrar (sakin makine) 55.836–57.321 Medyan 56.571; 45/45 tekrar yoklamadan geçti
Tan, eli çenesinde düşünürken

Kendi düzeneğinize

Üç somut ekleme

  • Farklı çevrimde ölçen ikinci faz ve ayrışınca koşuyu geçersiz sayan kural (bekliyor)
  • Her tekrardan önce uygulama kodu çalıştırmayan bir yoklama (bekliyor)
  • Tekrarın yanında ortamın kaydı (bekliyor)
Tan, el sallarken

Ölçümün kendisi

İkinci yol

muhammetsafak.com/tr/research/go-php-oauth2-cekirdek-basina-kapasite/

Çıkan sayılar ve elenen denemelerin ham verisi araştırma defterinde.

Paylaş, göm, indir