AB… sahte başarısız istekleri ile Yük Testi (uzunluk)


209

Bazı yük testleri yapmak için, kendi merakım için, sunucumda koştum:

ab -kc 50 -t 200 http://localhost/index.php

Bu, 200 saniye boyunca 50 canlı tutma bağlantısı açar ve sunucumu index.php istekleriyle vurur

Sonuçlarımda şunu elde ederim:

Concurrency Level:      50
Time taken for tests:   200.007 seconds
Complete requests:      33106
Failed requests:        32951
   (Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors:           0
Keep-Alive requests:    0
Total transferred:      1948268960 bytes
HTML transferred:       1938001392 bytes
Requests per second:    165.52 [#/sec] (mean)
Time per request:       302.071 [ms] (mean)
Time per request:       6.041 [ms] (mean, across all concurrent requests)
Transfer rate:          9512.69 [Kbytes/sec] received

32951 "başarısız" isteklerine dikkat edin. Bunu anlayamıyorum.

Test devam ederken, sayfamın altındaki sayfa yükleme süreleri normal .02 yerine .5 olarak bildirilse de, web siteme ev bilgisayarımdan mükemmel bir şekilde erişebildim. Ancak bir zamanlar başarısız bir isteğim olmadı.

Peki AB neden bağlantıların yarısının başarısız olduğunu bildiriyor? Ve "Uzunluk:" bu bağlamda ne anlama geliyor?


Web sitenizde bir yük dengeleyici var mı? Yük testinde "benim için çalışıyor" durumunu açıklayabilecek yük dengeleyicilerle yük testi hakkındaki blog yayınımı görün .
Patrick Lightbody

Yanıtlar:


361

Boşver. "Uzunluk hatası" sadece yanıt uzunluğunun yaklaşık yarısının farklı olduğunu gösterir.

İçerik dinamik olduğundan, muhtemelen oturum tanımlayıcısı veya bunun gibi bir şeydir.


8
Hey, ben sadece aynı "sorun" ile karşılaştı ve bu cevap burada olduğunu sevindim. Thanx!
Richard Hurt

2
Cevabınız için teşekkürler, aynı şüphem vardı.
Saiyine

63
Evet, iki yıl sonra bu cevap hala gerçekten faydalı.
Sergi

11
Bunu değişken içerik uzunluğu uyuşmazlıklarıyla ilişkilendirmek için çok hızlı olmayın. ab, HTTP durum kodunu 500 özetinde hata olarak bildirmez. Uzunluk uyumsuzluğunun nedeni gerçek bir hatanız olabilir. Daha fazla bilgi almak için -v 4 kullanabilirsiniz (çok fazla çıktı olacağından bir dosyaya daha iyi aktarım).
Tal Lev-Ami

3
Aslında burada ab kılavuzunda açıklanmıştır httpd.apache.org/docs/current/programs/ab.html "Test sırasında belge uzunluğu değişirse, yanıt bir hata olarak kabul edilir."
Захар Joe

132

Sorunu başka bir deyişle tanımlamak için:

Apache kıyaslama aracı (ab), yanıt içeriğinin uzunluğunun tüm test boyunca aynı olacağını varsayar. İlk cevabın içerik uzunluğunu saklar. Başka yanıtlardan herhangi birinin farklı içerik uzunluğu varsa "uzunluk hataları" na neden olurlar.

Aşağıdaki apache hata raporunun doğruladığı görülüyor: ASF Bug 42040

Özet : Değişken uzunlukta herhangi bir içerik sunuyorsanız, muhtemelen bu tür ab istek hatalarını göz ardı etmelisiniz.

Düzenleme : Son zamanlarda abkomutun yeni (en azından benim için) seçeneği olduğunu fark ettim :

-l   Accept variable document length (use this for dynamic pages)

Ben ab 2.3 sürümünde görebilirsiniz <$ Revizyon: 1528965 $> ama ab 2.3 sürümünde göremiyorum <$ Revizyon: 655654 $> , bu yüzden nispeten yakın zamanda eklendi.


4
Mac'teki herkes için, ab sürümünüzün geride kalması ve -l almama olasılığı vardır. Kaynaktan veya homebrew ile kurabilirsiniz, ancak apache paketinin bir parçası olduğu için "brew install ab" çalışmıyor - "brew install homebrew / apache / ab" ile kurabilirsiniz.
netpoetica

8

Eski bir soruyu yeniden canlandırdığım için üzgünüm, ancak Google'da ilk ortaya çıkan soru oldu. Bazen ab tarafından bildirilen uzunluk hatasına gerçek bir sorun neden olmuş olabilir: bağlantı, içerik tarafı başlığında bildirilen toplam bayt miktarından önce sunucu tarafında kapatılırsa, istemci tarafından alınmaz. Bu, istemci ve sunucu arasında başka taraflar varsa, örneğin saf el işi yük dengeleyicileri (benim durumum) olabilir.

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.