2009-10-02 22 views
21

में लंबाई से विफल अनुरोध मेरे पास PHP, Lighttpd में एक वेबसाइट है। यह Centos 5 पर MySQL का भी उपयोग करता है। मैंने अपाचे बेंच (एबी) के साथ नीचे दिए गए कोड के साथ अपने PHP का परीक्षण किया है। इसके परिणामस्वरूप कुछ त्रुटियां (असफल अनुरोध) सामान्य से अन्य लंबाई दर्शाती हैं। मुझे पूरा यकीन है कि मेरे PHP परिणाम हमेशा एक ही सटीक लंबाई होना चाहिए। मैंने अपने Lighttpd और MySQL लॉग और त्रुटि लॉग की समीक्षा की है और इसमें कोई त्रुटि नहीं है।मेरे अपाचेबेन्च लोड परीक्षण परिणाम

क्या यह देखने का कोई तरीका है कि परिणामस्वरूप अन्य लंबाई कब होती है या क्या कोई अन्य तरीका है कि इसका कारण क्या है या "बुरा" परिणाम क्या है?

मुझे यह जानने की ज़रूरत है क्योंकि मुझे 100% अच्छे परिणाम होने की आवश्यकता है।

-bash-3.2# ab -n 500 -c 200 http://domain.com/test/index.php 
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ 
Copyright 2006 The Apache Software Foundation, http://www.apache.org/ 

Benchmarking domain.com (be patient) 
Completed 100 requests 
Completed 200 requests 
Completed 300 requests 
Completed 400 requests 
Finished 500 requests 


Server Software:  lighttpd/1.4.20 
Server Hostname:  domain.com 
Server Port:   80 

Document Path:   /test/index.php 
Document Length:  15673 bytes 

Concurrency Level:  200 
Time taken for tests: 0.375862 seconds 
Complete requests:  500 
Failed requests:  499 
    (Connect: 0, Length: 499, Exceptions: 0) 
Write errors:   0 
Total transferred:  7920671 bytes 
HTML transferred:  7837000 bytes 
Requests per second: 1330.28 [#/sec] (mean) 
Time per request:  150.345 [ms] (mean) 
Time per request:  0.752 [ms] (mean, across all concurrent requests) 
Transfer rate:   20579.36 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 10 9.4  6  30 
Processing:  0 113 133.5  16  342 
Waiting:  0 111 134.3  12  341 
Total:   0 123 138.9  16  370 

Percentage of the requests served within a certain time (ms) 
    50%  16 
    66% 235 
    75% 289 
    80% 298 
    90% 331 
    95% 345 
    98% 365 
    99% 368 
100% 370 (longest request) 

उत्तर

17

ab-v 2 पैरामीटर के साथ चलाएं, जिसका अर्थ वर्बोजिटी स्तर 2 है। यह प्रतिक्रिया शीर्षकों को डंप करेगा। यदि आपके अनुरोध खंडित एन्कोडिंग का उपयोग नहीं कर रहे हैं, तो आपको एक "सामग्री-लंबाई" शीर्षलेख दिखाई देगा जो प्रत्येक प्रतिक्रिया के आकार को इंगित करता है।

gw:~$ ab -n 1 -v 2 "http://whatever.com/" 

... 

LOG: header received: 
HTTP/1.0 200 OK 
... 
Content-Length: 1568399 

यदि आपकी प्रतिक्रियाएं खंडित एन्कोडिंग का उपयोग करती हैं, तो स्थानांतरण समाप्त होने तक लंबाई ज्ञात नहीं है। आम तौर पर खंडित एन्कोडिंग केवल संपीड़ित प्रतिक्रियाओं के लिए उपयोग की जाती है, और अपाचेबेन्च डिफ़ॉल्ट रूप से संपीड़न नहीं करता है।

यदि यह किसी भी कारण से प्रतिक्रियाओं को संपीड़ित कर सकता है जो इसे समझा सकता है; संपीड़ित लंबाई सामग्री पर निर्भर करता है।

आप curl -i और --compress विकल्प का उपयोग कर प्रतिक्रिया शीर्षकों को संपीड़न के साथ और बिना किसी अनुरोध के देखने के लिए भी उपयोग कर सकते हैं।

+27

** अनाम उपयोगकर्ता द्वारा टिप्पणी (अस्वीकार संपादित): ** नोट: 'ab' सभी प्रतिक्रियाओं को आकार में बराबर होने की अपेक्षा करता है। यदि कोई आउटपुट है तो आपका आउटपुट आकार में भिन्न होगा, आपको "असफल अनुरोध" को अनदेखा करना चाहिए, क्योंकि 'ab' उन्हें असफल मानता है। – Anne

3

उपयोग tcpdump

ओपन मात्रा 2 टर्मिनल/खोल खिड़कियां या सिर्फ स्क्रीन का उपयोग करें।

sudo tcpdump -s 9999 -i eth0 -w myfile.txt 

दूसरी विंडो में, अपने अब आदेश बंद आग:

पहले विंडो में, उपयोग tcpdump संचरण डेटा अपने एनआईसी (eth0) से/एक फाइल करने के लिए कब्जा करने के लिए

ab -n 500 -c 200 http://domain.com/test/index.php 
आप monito में सक्षम होना चाहिए

strings myfile2.txt | grep -C 3 "200 OK" 

:

जब कि सभी किया है, तार और ग्रेप साथ फ़ाइल को पार्स आँखों से घूमने या परिणामों को grep'ing द्वारा वहाँ से सभी डेटा खंड।

+0

मैं 'tcpdump: ioctl: ऐसा कोई डिवाइस' संदेश sudo tcpdump –

+0

की कोशिश कर रहा है जब मैं था कि तुम क्या लिखा है और इस परिणाम हैं: - HTTP/1.0 200 ओके कनेक्शन: बंद एक्स-संचालित-द्वारा: PHP/5.2.6 सामग्री-प्रकार: टेक्स्ट/एचटीएमएल मुझे इस परिणाम की व्याख्या कैसे करनी चाहिए? –

+0

टॉमसज़: आपको जो भी * निक्स ओएस चल रहा है, उसके लिए आपको एनआईसी डिवाइस पहचानकर्ता को बदलना होगा। मैक पर en0, लिनक्स पर eth0, आदि HTTP/1.0 200 ओके का अर्थ है कि वेब सर्वर ने अनुरोधित संसाधन पाया और सामग्री लौटा दी। पेज सफल हुआ! आपको यह देखने के लिए कि myfile2.txt की सामग्री को पढ़ने के लिए अभी क्या होगा, यह देखने के लिए कि चित्र में विफलता कहां आ रही है। –

1

अब मानते हैं कि सभी प्रतिक्रियाएं समान हैं। यह पहली प्रतिक्रिया की सामग्री-लंबाई को देखता है, और फिर दूसरों को इसकी तुलना करता है।

आदमी पृष्ठ से:

Document Length 
    This is the size in bytes of the first successfully returned document. 
    If the document length changes during testing, the response is 
    considered an error. 

तो आपका पहला अनुरोध डेटा निम्नलिखित शामिल है:

{"hostname":"nodecellar-1-dwfxd","serverip":"10.1.3.3"} 

और अगले एक है:

{"hostname":"nodecellar-1-dwfxd","serverip":"10.1.3.30"} 

अब एक साथ विफल हो जाएगा लंबाई त्रुटि, क्योंकि आउटपुट एक वर्ण लंबा है।