Proxy Station
Kayıt ol
Tüm rehberler

Bir p95 yirmi ölçüm ister: altı ölçümden çıkan sayı sadece en kötüsüdür

Altı ölçümden gelen bir `p95: 35s`, size yüzdelik dilimi değil, altı çağrının en yavaşını söylüyor — başka bir adla.

Proxy StationYayın 9 dk okuma

Altı ölçümden p95: 35s yazan bir gösterge size doksan beşinci yüzdelik dilimi anlatmıyor. Size altı çağrının en yavaşını, çok daha güçlü bir şey ima eden bir adla anlatıyor. Bu bir yuvarlama meselesi değil — yirmi örneğin altında ikisi yapısı gereği aynı sayıdır ve değişen tek şey etikettir.

Tam olarak bunu yayına aldık, 2026-08-31’de yakaladık ve düzeltme üç satır. Gerekçesi düzeltmeden daha değerli.

Aritmetik

nearest-rank yöntemi — hızlı uygulamaların çoğunda varsayılan olan ve elle yazılmış bir yüzdelik fonksiyonundan alacağınız yöntem — ölçümleri sıralar ve ceil(p × n) indeksindeki değeri seçer.

95. yüzdelik için o indeks ceil(0,95 × n). Adım adım:

Örnek (n)Seçilen indeksBu hangi eleman?
66sonuncusu — maksimum
1010maksimum
1212maksimum
1515maksimum
1919maksimum
2019ikinci en yavaş — gerçek bir kuyruk
4038üçüncü en yavaş

Eşik zevkten değil eşitsizlikten çıkıyor. ceil(0,95n) < n olması gerekir ve bu ancak n ≥ 20 olduğunda sağlanır. Altında hesapladığınız her “p95” maksimumdur — sütun başlığında ona ne derseniz deyin.

Medyan ucuz, kuyruk pahalı

Yararlı sonuç şu: bir gecikme sütunundaki iki rakamın maliyeti çok farklıdır ve onları tek eşikli tek bir çift gibi görmek soruna sebep olan şeydir.

RakamAnlam kazanması için gereken örnekNeden
Medyan (p50)~5Beş ölçümün gerçekten bir ortası vardır. Yenileri geldikçe yumuşak hareket eder.
p95en az 20, fazlası daha iyiNadir durum hakkında bir ifadedir ve nadir durumların görünmesi için yeterli çekiliş gerekir.

Yani ikisini de aynı sayının arkasına koyan bir monitör, ya erken sahte bir kuyruk yayınlar ya da gayet iyi bir medyanı saatlerce saklar. Bizde ilki vardı, ki daha kötü olanı: hassas görünen ama olmayan bir sayı basıyordu.

Tabanları ayırmak iki ucu da düzeltti. Medyan, bir model ölçülmeye başladıktan dakikalar sonra beliriyor; kuyruk ise gerçekten kuyruk olana kadar bekliyor. Bu arada sütun yalnızca medyanı gösteriyor — bakılacak daha az şey ve daha doğru.

İnterpolasyon bunu düzeltmez, ipucunu gizler

İndeksi kendiniz yazmak yerine bir istatistik kütüphanesine uzanırsanız, genellikle nearest-rank yerine doğrusal interpolasyon alırsınız. NumPy ve pandas ikisi de bunu varsayar. İndeks (n − 1) × p olur ve iki ölçümün arasına düştüğünde sonuç aralarında interpole edilir.

Altı örnek için bu 5 × 0,95 = 4,75 — beşinci ölçümden altıncıya doğru yolun dörtte üçü. Yani cevap artık tam olarak maksimum değil ve bu bir iyileşme gibi geliyor.

Değil. Biri 30 saniyede, beşi iki saniye civarında olan ölçümlerle interpole edilmiş p95 yaklaşık 23 çıkar — hâlâ ezici biçimde tek bir en kötü çağrı tarafından belirlenmiş, ama artık ona eşit değil. Sorun aynı, belirti kayboldu. nearest-rank en azından kendini ele verir: en yavaş çağrınıza tam olarak eşit bir p95, herkesin fark edebileceği bir ipucudur. Arada duran interpole edilmiş bir sayı ise gerçek bir tahmin gibi görünür.

Hiçbir yöntem, örnek sayısının içermediği bilgiyi yaratmaz. Yüzdelik dilim, bir şeyin ne sıklıkta olduğuna dair bir iddiadır ve hiçbir aritmetik, altı çekilişten yirmide bir iddiası çıkarmaz.

Beklerken ne göstermeli

Bir rakamı saklamak boşluk bırakır ve tirelerle dolu bir sütun beklemede değil bozuk görünür. Üç seçenek, önerme sırasına göre:

  • Yalnızca medyanı gösterin. Neredeyse anında hazır olur ve zaten okuyucuların çoğunun istediği rakamdır. Bizim yaptığımız bu.
  • Sütunu elinizdekinin adıyla adlandırın. “12 ölçümün en yavaşı” dürüst, bilgilendirici ve kimse onu dağılım sanmaz.
  • Tabanı düşürmek yerine pencereyi genişletin. Düşük trafikli bir uçta yedi günlük bir p95 yirmi örneği geçebilirken beş dakikalık pencere hiç geçemez — değişime yavaş tepki verme pahasına.

Yapmayacağımız şey, etiketi koruyup eşiği düşürmek. Sütun başlığı sayının ne anlama geldiğine dair bir iddiadır ve bir göstergenin okuyucuların tamamen güvene aldığı tek parçasıdır.

Bu neden gözden kaçtı

Bu hatayı ilginç kılan aritmetik değil — yanlış sayının neden ayakta kaldığı.

İlk düzeltmemiz tabanı on ikiye koydu ve yanına on ikinin “nearest-rank indeksinin son elemana düşmeyi bıraktığı nokta” olduğunu açıklayan bir yorum yazdı. Gerekçe doğruydu, sayı yanlıştı: on ikide ceil(11,4) 12’dir, yani hâlâ son eleman. Kendinden emin bir yorum, yanlış bir sabiti düşünülmüş gösterdi.

Testi de vardı. Test, birbirinin aynı ölçümlerden bir fixture kurup p95’in o değere eşit çıktığını doğruluyordu — ki bu her tabanda geçer, çünkü her ölçüm 2000ms olduğunda maksimum da medyan da p95 de aynıdır. Yayılımı olmayan bir fixture, maksimuma çökmüş bir istatistiği tespit edemez.

Yakalayan test, bir değeri değil bir özelliği doğrular: belirgin tek bir aykırı değer içeren ölçümler verildiğinde, yayınlanan p95 o aykırı değere eşit olmamalıdır.

// Yirmi ölçüm içinde bir yavaş çağrı. Onu döndüren bir p95,
// sütun başlığı ne derse desin maksimuma çökmüştür.
const spiky = [30000, ...Array(19).fill(2000)];

assert.notEqual(p95(spiky), 30000);   // 20'nin altındaki her tabanda kalır
assert.equal(p95(spiky), 2000);

// Ve bir eksikte nearest-rank gerçekten maksimuma düşer --
// yani asla yayınlanmaması gereken rakama.
assert.equal(p95(spiky.slice(0, 19)), 30000);

Kendi göstergelerinizde neye bakmalı

  1. Her yüzdelik diliminin arkasındaki örnek sayısını bulun. Düşük trafikli bir uçta beş dakikalık pencerede hesaplanan bir p95 için bunun gerçekte kaç istek olduğunu sayın. Yirminin altındaysa o bir maksimumdur.
  2. Hiç hareket etmeyen yüzdelikleri arayın. Şüpheli biçimde yuvarlak bir en kötü değere sabitlenmiş, saatlerdir değişmeyen bir p95 genelde kılık değiştirmiş bir maksimumdur.
  3. Test fixture’larınızın yayılımı olsun. Aynı değerler üzerine kurulmuş bir yüzdelik testi, yüzdelikler hakkında hiçbir şey doğrulamaz.
  4. Medyanı ve kuyruğu ayrı eşikleyin. Farklı miktarda kanıt isterler ve tek eşik ikisine birden hizmet edemez.
  5. Tahmin etmektense saklayın. Bir tire, dört veri noktasından türetilmiş kendinden emin bir sayıdan daha küçük bir yalandır.

Aynı disiplin bir izleme sayfasının bastığı her oran için geçerli. Üç kontrolden çıkan bir erişilebilirlik yüzdesi, iki hatadan çıkan bir hata oranı, bir avuç değerlendirilmiş yanıttan çıkan bir model ikame oranı — hepsi ölçüm gibi görünür ve ekrandaki ondalıkları destekleyecek kadar çekiliş birikene dek hepsi anekdottur.

Devamı

Bizim gecikme sütunumuz artık beş zamanlanmış yanıttan medyan gösteriyor ve kuyruğu yirmiye kadar tutuyor; durum sayfasında yeni ölçülen modellerde o ikinci konumda tire görmenizin sebebi bu. Tire, dürüst cevap.

Bu rehberdeki rakamlar yanlarında yazan tarihlerde okundu. Fiyatlar değişir; bir iddia sağlayıcının yayınlanmış fiyatına dayanıyorsa bağlantı o sağlayıcının kendi sayfasına gider, böylece bizimkine güvenmek yerine kontrol edebilirsiniz. Bu rehber 2026-11-30 tarihine kadar gözden geçirilecek.

Sayıları kendiniz kontrol edin

Bu istasyondaki her model, token başına fiyatı ve sağlayıcının yayınlanmış liste fiyatı, okumak için hesap gerekmeden fiyat sayfasında duruyor.