एबी के साथ लोड परीक्षण ... नकली विफल अनुरोध (लंबाई)


209

कुछ भार परीक्षण करने के लिए, अपनी जिज्ञासा के लिए, अपने सर्वर पर मैं भागा:

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

यह 200 सेकंड के लिए 50 कीप-सजीव कनेक्शन को खोलता है और सिर्फ index.php के अनुरोध के साथ मेरे सर्वर को स्लैम करता है

मेरे परिणामों में, मुझे:

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 "विफल" अनुरोधों पर ध्यान दें। मैं इसका पता नहीं लगा सकता।

जैसा कि परीक्षण चल रहा था, मैं अपने वेब साइट को अपने होम कंप्यूटर से पूरी तरह से एक्सेस करने में सक्षम था, यद्यपि पृष्ठ के निचले भाग के पृष्ठ लोड समय को सामान्य .02 के बजाय .5 के रूप में रिपोर्ट किया गया था। हालाँकि मैंने कभी एक बार भी असफल अनुरोध नहीं किया था।

तो एबी क्यों रिपोर्ट कर रहा है कि आधे कनेक्शन फेल हैं? और उस संदर्भ में "लंबाई:" का क्या अर्थ है?


क्या आपकी वेबसाइट पर एक लोड बैलेंसर है? लोड परीक्षण के साथ लोड परीक्षण पर मेरा ब्लॉग पोस्ट देखें जो लोड परीक्षण में "यह मेरे लिए काम करता है" स्थिति की व्याख्या कर सकता है।
पैट्रिक लाइटबॉडी 19

जवाबों:


361

कोई बात नहीं। "लंबाई की विफलता" केवल संकेत देती है कि लगभग आधे समय प्रतिक्रिया की लंबाई अलग थी।

चूंकि सामग्री गतिशील है, शायद यह सत्र पहचानकर्ता या ऐसा कुछ है।


8
अरे, मैं बस उसी "समस्या" में भाग गया और मुझे खुशी है कि यह उत्तर यहां था। Thanx!
रिचर्ड हर्ट

2
उत्तर के लिए धन्यवाद, मुझे बिल्कुल वही संदेह था।
सैय्यन

63
हां, दो साल बाद यह जवाब अभी भी उपयोगी है।
सेर्गी

11
इसे चर सामग्री लंबाई बेमेल के लिए विशेषता के लिए बहुत जल्दी मत बनो। ab ने HTTP सारांश कोड 500 को उसके सारांश में त्रुटियों के रूप में रिपोर्ट नहीं किया है। लंबाई मिसमैच का कारण यह हो सकता है कि आपके पास वास्तविक त्रुटि है। आप अधिक जानकारी प्राप्त करने के लिए -v 4 का उपयोग कर सकते हैं (फ़ाइल में बेहतर पाइप क्योंकि बहुत प्रिंटआउट होगा)।
ताल लेव-अमी

3
वास्तव में यह यहाँ ab मैनुअल में समझाया गया है httpd.apache.org/docs/current/programs/ab.html "यदि परीक्षण के दौरान दस्तावेज़ की लंबाई बदलती है, तो प्रतिक्रिया को एक त्रुटि माना जाता है।"
17ахар जो

132

दूसरे शब्दों में समस्या का वर्णन करने के लिए:

अपाचे बेंचमार्किंग टूल (ab) मानता है कि प्रतिक्रिया सामग्री की लंबाई पूरे परीक्षण के दौरान समान होगी। यह पहली प्रतिक्रिया की सामग्री लंबाई संग्रहीत करता है। यदि किसी भी आगे की प्रतिक्रिया में अलग-अलग सामग्री की लंबाई है, तो वे "लंबाई विफलताओं" में परिणाम करते हैं।

अपाचे बग रिपोर्ट की पुष्टि के बाद लगता है कि: एएसएफ बग 42040

सारांश : यदि आप चर लंबाई की किसी भी सामग्री की सेवा कर रहे हैं, तो आपको संभवतः इस तरह के एब अनुरोध विफलताओं को अनदेखा करना चाहिए।

संपादित करें : मैंने हाल ही में देखा है कि abकमांड में एक नया (कम से कम मेरे लिए) विकल्प है:

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

मैं में देख सकते हैं अब संस्करण 2.3 <$ संशोधन: 1,528,965 $> लेकिन यह में नहीं देख सकते हैं अब संस्करण 2.3 <$ संशोधन: 655,654 $> , तो यह शायद अपेक्षाकृत हाल ही में जोड़ा गया है।


4
एक मैक पर किसी के लिए, संभावना है कि आपके एब का संस्करण पीछे है और -एल नहीं लेगा। आप स्रोत से या होमब्रे के माध्यम से स्थापित कर सकते हैं, लेकिन "काढ़ा स्थापित करें" काम नहीं करता है क्योंकि यह अपाचे पैकेज का हिस्सा है - आप "काढ़ा स्थापित होमब्रे / अपाचे / एबी" के साथ स्थापित कर सकते हैं।
नेटपोएटिका

8

एक पुराने प्रश्न को पुनः प्राप्त करने के लिए क्षमा करें, लेकिन यह पहला ऐसा था जो Google में पॉप अप हुआ था। कभी-कभी ab द्वारा बताई गई लंबाई की त्रुटि एक वास्तविक समस्या के कारण हो सकती है: यदि कन्टैंट-लेंथ हेडर में घोषित बाइट्स की कुल राशि क्लाइंट द्वारा प्राप्त नहीं हुई है, तो कनेक्शन को सर्वर-साइड बंद कर दिया जाता है। ऐसा हो सकता है यदि क्लाइंट और सर्वर के बीच अन्य पक्ष हैं, उदाहरण के लिए, भोले दस्तकारी लोड बैलेंसर्स (मेरा मामला)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.