2016-04-12 5 views
9

redis क्लस्टर है, जो बड़ा लोड पर पूरी तरह से ठीक काम करता है और 50% टाइमआउट दर और कम लोड पर अस्थिर प्रतिक्रिया समय के साथ प्रदर्शन शुरू होने के के अजीब व्यवहार देखें।Redis क्लस्टर प्रदर्शन - कम लोड पर उच्च टाइमआउट दर

हमारे पास कम भार की अवधि पर प्रत्येक दिन एक ही पिटर है।

कोई विचार जो इस तरह के एक अजीब पैटर्न का कारण बन सकता है? शायद कुछ रखरखाव का काम यह RedisCluster कम लोड समय पर करना शुरू कर देता है? स्लॉट रीबैलेंसिंग की तरह। कृपया जांचने के लिए किसी भी सेटिंग्स या पहलुओं की सिफारिश करें।

संस्करण: Redis 2.0.7, Jedis 2.8.1

विन्यास: 9 मास्टर प्रक्रियाओं और 18 दास के साथ 3 भौतिक नोड्स।

जेडिसक्लस्टर टाइमआउट = 5ms।

लोड सेटएक्स के साथ 100% लिखता है।

JedisCluster response time JedisCluster timeout rate

यह रेखांकन JedisCluster प्रतिक्रिया समय, न कि वास्तविक RedisCluster समय के लिए कर रहे हैं। "सेट्स" लाइन यहां वास्तव में सफल सेट है, कुल गणना नहीं।

+0

जब RedisCluster से कनेक्ट कर आप DNS खोज क्या ज़रूरत है? – Slach

+0

@ स्लेच नो, हम आईपी द्वारा कनेक्ट करते हैं और जेडिस के माध्यम से कनेक्शन पूल का उपयोग करते हैं, इसलिए पुन: कनेक्शन दुर्लभ स्थिति है –

उत्तर

5

अंत में मैंने पाया कि यह नेटवर्क समस्या की तरह दिखता है।

redis08(10.201.12.214) ~ $ redis-benchmark -h 10.201.12.215 -p 9006 
====== PING_INLINE ====== 
    100000 requests completed in 91.42 seconds 
    50 parallel clients 
    3 bytes payload 
    keep alive: 1 

0.00% <= 11 milliseconds 

redis09(10.201.12.215) ~ $ redis-benchmark -h 10.201.12.215 -p 9006 
====== PING_INLINE ====== 
    100000 requests completed in 1.41 seconds 
    50 parallel clients 
    3 bytes payload 
    keep alive: 1 

99.46% <= 1 milliseconds 

redis08 ~ $ ping lga-redis09 
PING redis09 (10.201.12.215) 56(84) bytes of data. 
64 bytes from redis09 (10.201.12.215): icmp_seq=1 ttl=64 time=10.7 ms 

collectd के "if_octets" को देखते हुए हम कम लिखने गतिविधि के इस समय पर नेटवर्क इंटरफेस पर भारी नेटवर्क गतिविधि है। रात का भार दिन के भार के मुकाबले 10x की तरह है।

और यह redis नोड्स जो शुरू सक्रिय रूप से इस कम लोड अवधि के बारे में जानकारी का आदान प्रदान करने के कारण होता है। Iptraf शीर्ष कनेक्शन आउटपुट: Iptraf output, most packets and traffic are between redis nodes/processes itself जबकि इस आईपीआरटीएफ रिपोर्ट में दिन के शीर्ष पर अच्छे लिखने वाले लोड के साथ वास्तविक रेडिस क्लाइंट से पूरी तरह से संबंधित है।

अंत में पाया गया कि हमारे पास प्रतिकृति के साथ समस्याएं हैं। कभी-कभी बफर पर्याप्त नहीं था और गुलामों ने पूर्ण resync शुरू किया। ऐसा लगता है कि इस रात के लोड की तरह - पूर्ण resync प्रयास + कम प्रतिलिपि-टाइमआउट मान - परिणामस्वरूप neverending प्रतिकृति प्रयासों। यह प्रतिकृति कम रात के भार को इतनी महत्वपूर्ण रूप से क्यों प्रभावित करती है और दिन के समय को प्रभावित नहीं करती - मुझे नहीं पता, रेडिस अक्सर रात या कुछ ऐसा करने पर प्रयास करता है। तो यह दिलचस्प है, हम स्पष्ट सेटिंग में वृद्धि से प्रतिकृति neverending निश्चित:

repl-backlog-size 
repl-timeout 
संबंधित मुद्दे