2012-01-24 12 views
7

मेरे पास मेरे मिंट/डेबियन बॉक्स पर कॉच डीबी का सुंदर सीधा सेटअप है। मेरा जावा वेबपैच कॉच डीबी से पूछताछ करने में काफी देरी कर रहा था, इसलिए मैंने कारणों की तलाश शुरू कर दी।कॉच डीबी/मोचीवेब: लगातार कनेक्शन का नकारात्मक प्रभाव

EDIT: क्वेरी पैटर्न बहुत छोटे प्रश्न और छोटे JSON ऑब्जेक्ट्स (जैसे 300 बाइट्स ऊपर/1 किलोबाइट नीचे) है।

वायरशर्क डंप बहुत अच्छे हैं, जो अधिकतर 3-5 मिलिस अनुरोध-प्रतिक्रिया टर्नअराउंड दिखाते हैं। जेवीएम फ्रेम नमूना ने मुझे दिखाया कि सॉकेट कोड (सोफे के लिए क्लाइंट साइड प्रश्न) कुछ हद तक व्यस्त है, लेकिन कुछ भी उल्लेखनीय नहीं है। फिर मैंने अपाचेबेन्च और ओप्स के साथ इसे प्रोफाइल करने की कोशिश की: मैं वर्तमान में देखता हूं कि जीवित रहने वाले गैर-लगातार सेटअप पर अतिरिक्त अतिरिक्त 3 9 एमएमएस देरी पेश करते हैं।

क्या कोई यह जानता है कि इसे कैसे समझाया जाए? हो सकता है कि लगातार कनेक्शन टीसीपी परत पर भीड़ खिड़की को बढ़ाएं और फिर टीसीपी_डब्ल्यूआईटी और छोटे अनुरोध/प्रतिक्रिया आकार, या ऐसा कुछ होने के कारण बाहर निकल रहे हैं? क्या यह विकल्प (TCP_WAIT) को कभी भी लूपबैक टीसीपी कनेक्शन के लिए चालू किया जाना चाहिए?

[email protected] ~ $ uname -a 
Linux mint 2.6.39-2-486 #1 Tue Jul 5 02:52:23 UTC 2011 i686 GNU/Linux 
[email protected] ~ $ curl http://127.0.0.1:5984/ 
{"couchdb":"Welcome","version":"1.1.1"} 

अनुरोध

[email protected] ~ $ ab -n 1024 -c 1 -k http://127.0.0.1:5984/ 
>>>snip 
Server Software:  CouchDB/1.1.1 
Server Hostname:  127.0.0.1 
Server Port:   5984 

Document Path:  /
Document Length:  40 bytes 

Concurrency Level:  1 
Time taken for tests: 41.001 seconds 
Complete requests:  1024 
Failed requests:  0 
Write errors:   0 
Keep-Alive requests: 1024 
Total transferred:  261120 bytes 
HTML transferred:  40960 bytes 
Requests per second: 24.98 [#/sec] (mean) 
Time per request:  40.040 [ms] (mean) 
Time per request:  40.040 [ms] (mean, across all concurrent requests) 
Transfer rate:   6.22 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 0 0.0  0  0 
Processing:  1 40 1.4  40  48 
Waiting:  0 1 0.7  1  8 
Total:   1 40 1.3  40  48 

Percentage of the requests served within a certain time (ms) 
    50%  40 
>>>snip 
    95%  40 
    98%  41 
    99%  44 
100%  48 (longest request) 

नहीं keepalive प्रति जिंदा, औसत 40 मिली सेकंड के रखने के लिए, और देखा के साथ चल रहा है - अनुरोध के अनुसार 1 एमएस, ज्यादातर।

[email protected] ~ $ ab -n 1024 -c 1 http://127.0.0.1:5984/ 
>>>snip 
Time taken for tests: 1.080 seconds 
Complete requests:  1024 
Failed requests:  0 
Write errors:   0 
Total transferred:  236544 bytes 
HTML transferred:  40960 bytes 
Requests per second: 948.15 [#/sec] (mean) 
Time per request:  1.055 [ms] (mean) 
Time per request:  1.055 [ms] (mean, across all concurrent requests) 
Transfer rate:   213.89 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 0 0.0  0  0 
Processing:  1 1 1.0  1  11 
Waiting:  1 1 0.9  1  11 
Total:   1 1 1.0  1  11 

Percentage of the requests served within a certain time (ms) 
    50%  1 
>>>snip 
    80%  1 
    90%  2 
    95%  3 
    98%  5 
    99%  6 
100%  11 (longest request) 

ठीक है, अब जीवित रहने के साथ ही http शीर्षलेख के माध्यम से कनेक्शन को बंद करने के लिए भी कहें। प्रति अनुरोध या तो 1 एमएस भी।

[email protected] ~ $ ab -n 1024 -c 1 -k -H 'Connection: close' http://127.0.0.1:5984/ 
>>>snip 
Time taken for tests: 1.131 seconds 
Complete requests:  1024 
Failed requests:  0 
Write errors:   0 
Keep-Alive requests: 0 
Total transferred:  236544 bytes 
HTML transferred:  40960 bytes 
Requests per second: 905.03 [#/sec] (mean) 
Time per request:  1.105 [ms] (mean) 
Time per request:  1.105 [ms] (mean, across all concurrent requests) 
Transfer rate:   204.16 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 0 0.0  0  0 
Processing:  1 1 1.2  1  14 
Waiting:  0 1 1.1  1  13 
Total:   1 1 1.2  1  14 

Percentage of the requests served within a certain time (ms) 
    50%  1 
>>>snip 
    80%  1 
    90%  2 
    95%  3 
    98%  6 
    99%  7 
100%  14 (longest request) 

उत्तर

8

हाँ, यह टीसीपी सॉकेट सेटअप विकल्पों से संबंधित है। इस कॉन्फ़िगरेशन ने अब सभी तीन मामलों को प्रति अनुरोध 1ms पर बंद कर दिया है।

[httpd] 
socket_options = [{nodelay, true}] 

जानकारी के लिए इस देखें: http://wiki.apache.org/couchdb/Performance#Network

+1

निम्नलिखित के लिए धन्यवाद। मैंने तुरंत 'नोडेले' के बारे में सोचा लेकिन मुझे यकीन नहीं था कि यह सही था या इसकी पुष्टि कैसे करें। – JasonSmith

संबंधित मुद्दे