Apache ab: Lütfen çıktıyı açıklayın


31

Etrafa baktım ve çıktıyla ilgili ayrıntılı bir açıklama bulamadım. Birçoğunun anlaşılması gerçekten kolay, ancak beni şaşırtan bir kısım var:

Time per request:       109537.505 [ms] (mean)
Time per request:       109.538 [ms] (mean, across all concurrent requests)

Bu, - benim için - tüm eşzamanlı istekleri ölçtüğünüzde (ne anlama gelirse), isteklerin aniden 100 kat daha hızlı geri döndürülmesi anlamına gelir. İstek başına neden zaman bu kadar değişiyor? Bu anlamlı değil.

Bunun ve ab çıktısının diğer bölümlerinin ayrıntılı bir açıklaması var mı?

Yanıtlar:


53

Eşzamanlılık 1 olarak ayarlandıysa, bu ikisi arasında fark yoktur . Aynı anda 1'den fazla istek yaptığınızda farketmeye başlar.

Neye bulaştığımın bir örneğine bakalım localhost:

ab -c 1 -n 1000 http://localhost/

verecek:

Time taken for tests:   3.912 seconds
Time per request:       3.912 [ms] (mean)
Time per request:       3.912 [ms] (mean, across all concurrent requests)

Bu, 1000 isteği birer birer gerçekleştirmek için 3.912 saniyenin gerekli olduğu anlamına gelir. Dolayısıyla, tek bir istek için ortalama olarak 3.912 saniye / 1000 = 3.912 ms gerekiyordu.

Şimdi eşzamanlılık seviyesini biraz arttıralım:

ab -c 10 -n 1000 http://localhost/

Time taken for tests:   0.730 seconds
Time per request:       7.303 [ms] (mean)
Time per request:       0.730 [ms] (mean, across all concurrent requests)

3.912 saniye yerine bu sefer işi bitirmek için sadece 0.730 saniyeye ihtiyacımız var. 0.730 saniyede 1000 istek gerçekleştirdik, bu nedenle bir istek ortalama 0.730 saniye / 1000 = 0.730 ms (son satır) alacaktır. Ancak durum biraz farklı, çünkü şu anda aynı anda 10 istek yapıyoruz. Aslında buradaki sayımız bir isteğin tamamlanması için gereken gerçek zamanı yansıtmıyor . 0,730 ms * 10 (eşzamanlı istek sayısı) = 7,303 ms. Aynı anda gerçekleştirilemezse (veya mevcut eşzamanlılık düzeyinde izole edilmiş bir şekilde), tek bir isteğin aynı anda gerçekleştirilmesi durumunda tamamlaması ortalamadır.

En son gördüğünüz sayı (0,730 ms), -n 1001mevcut eşzamanlılık düzeyini -c 10(en azından teorik olarak öyle ) kullanarak 1 istek ( ) eklediğinizde toplam sürenin ne kadar artacağını söylemek için kullanılır .

7.303 ms size tek bir yalıtılmış isteğin ne kadar süreceği konusunda genel bir bakış sunar.

Örnek -c 1ve arasında gördüğünüz değişim -c 10:

[-c 1 ]: Time per request:       3.912 [ms] (mean)
[-c 10]: Time per request:       7.303 [ms] (mean)

Tek bir talebin, yürütülen tek talep ise daha hızlı çalışması anlamına gelir -c 1. -c 10Kaynaklar için rekabet eden birden fazla istek varsa , tek bir isteğin tamamlanması daha uzun sürer. Ancak, aynı anda 10 istek gerçekleştirdiğinizi göz önünde bulundurursanız, bu 7.303 msnde 1 yerine 10 istekle karşılaşırsınız.

Yani bir şekilde tek bir istek için gecikme ölçü - 7,303 ms daha yararlıdır. Ancak performansın bir ölçüsü olarak - 0.730 ms daha anlamlıdır. Aslında 0,730 ms <3,912 ms olarak 10 eşzamanlı talebe izin verirseniz toplamda saniyede daha fazla istek sunabileceğinizi görüyorsunuz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.