यूनिक्स डोमेन सॉकेट आमतौर पर लूपबैक इंटरफ़ेस पर टीसीपी सॉकेट से तेज़ होते हैं। आम तौर पर यूनिक्स डोमेन सॉकेट में औसत 2 माइक्रोसॉन्ड विलंबता होती है जबकि टीसीपी सॉकेट 6 माइक्रोसेकंड होता है।
यदि मैं डिफॉल्ट (कोई पाइपलाइन) के साथ रेडिस-बेंचमार्क चलाता हूं तो मुझे प्रति सेकेंड 160k अनुरोध दिखाई देता है, मूल रूप से क्योंकि एकल-थ्रेडेड रेडिस सर्वर टीसीपी सॉकेट द्वारा सीमित होता है, 160 माइक्रोसॉफ्ट के औसत प्रतिक्रिया समय पर 160k अनुरोध चलते हैं।
यूनिक्स डोमेन सॉकेट का उपयोग करते समय रेडोस प्रति सेकंड 320k एसईटी/जीईटी अनुरोध प्राप्त करता है।
लेकिन एक सीमा है, जो वास्तव में, टॉरसवेयर पर हमारे उत्पाद Speedus के साथ पहुंच गई है, 200 नैनोसेकंड की औसत विलंबता के साथ एक उच्च-प्रदर्शन टीसीपी सॉकेट कार्यान्वयन (अनुरोध के लिए [email protected] पर हमें पिंग करें चरम प्रदर्शन संस्करण)। लगभग शून्य विलंबता के साथ हम प्रति सेकंड लगभग 500k अनुरोध प्राप्त करने वाले रेडिस-बेंचमार्क देखते हैं। तो हम कह सकते हैं कि रेडिस-सर्वर विलंबता औसत पर प्रति अनुरोध लगभग 2 माइक्रोसॉन्ड है।
यदि आप एएसएपी का जवाब देना चाहते हैं और आपका भार शीर्ष रेडिस-सर्वर प्रदर्शन से नीचे है तो पाइपलाइनिंग से परहेज करना शायद सबसे अच्छा विकल्प है। हालांकि, अगर आप उच्च थ्रूपुट को संभालने में सक्षम होना चाहते हैं, तो आप अनुरोध की पाइपलाइनों को संभाल सकते हैं। प्रतिक्रिया थोड़ी देर ले सकती है लेकिन आप कुछ हार्डवेयर पर अधिक अनुरोध संसाधित करने में सक्षम होंगे।
इस प्रकार, पिछले परिदृश्य पर, 32 अनुरोधों की पाइपलाइन के साथ (सॉकेट के माध्यम से वास्तविक अनुरोध भेजने से पहले 32 अनुरोधों को बफर करना) आप लूपबैक इंटरफ़ेस पर प्रति सेकंड 1 मिलियन अनुरोधों को संसाधित कर सकते हैं। और इस परिदृश्य में जहां यूडीएस लाभ उच्च नहीं हैं, विशेष रूप से क्योंकि इस तरह की पाइपलाइनिंग प्रसंस्करण प्रदर्शन बाधा है। वास्तव में, 32 की पाइपलाइन के साथ 1 एम अनुरोध प्रति सेकंड लगभग 31k "वास्तविक" अनुरोध हैं, और हमने देखा है कि रेडिस-सर्वर प्रति सेकंड 160k अनुरोधों को संभालने में सक्षम है।
यूनिक्स डोमेन सॉकेट क्रमश: 1.1 एम और 1.7 एम सेट/प्रति सेकंड अनुरोध प्राप्त करते हैं। टीसीपी लूपबैक प्रति सेकंड 1 एम और 1.5 एसईटी/जीईटी अनुरोध संभालती है।
बाधा डालने के साथ परिवहन प्रोटोकॉल से पाइपलिंग हैंडलिंग तक चलती है।
यह redis-benchmark साइट में उल्लिखित जानकारी के अनुरूप है।
हालांकि, पाइपलाइनिंग नाटकीय रूप से प्रतिक्रिया समय बढ़ जाती है।इस प्रकार, बिना पाइपलाइनिंग के 100% ऑपरेशन आम तौर पर 1 मिलीसेकंड से कम में चलते हैं। 32 अनुरोधों को पाइपलाइन करते समय अधिकतम प्रतिक्रिया समय उच्च प्रदर्शन सर्वर में 4 मिलीसेकंड होता है, और मिलीसेकंड के दसियों यदि रेडिस-सर्वर एक अलग मशीन या वर्चुअल मशीन में चलता है।
तो आपको प्रतिक्रिया समय और अधिकतम थ्रूपुट से व्यापार करना होगा।
आप इस धीमी गति अपने आवेदन का उपयोग कर 'redis-benchmark' के बाहर दोहराने कर सकते हैं? –
[इस लिंक] के अनुसार (http://redis.io/topics/benchmarks) टीसीपी/आईपी लूपबैक की तुलना में यूनिक्स डोमेन सॉकेट का प्रदर्शन लाभ घटता है जब पाइपलाइनिंग का भारी उपयोग होता है (यानी लंबी पाइपलाइन)। – helloV
क्या आप SO_NODELAY सेट करते हैं? मैंने कुछ स्थितियों में यह मदद बहुत देखी है। – geert3