2012-03-20 8 views
5

मैं वर्तमान में कैसंड्राशर्प का उपयोग कर 3 नोड्स के साथ कैसंद्रा को बेंचमार्क कर रहा हूं। मेरे मुख्य चिंता प्रवाह क्षमता की तुलना में अधिक विलंबता है, इसलिए बाद जीसी ट्यूनिंग का एक सा यहाँ (100 000K आवेषण, मोनो धागे पर) मेरी नंबर दिए गए हैं:कैसंद्रा में विश्वसनीय सम्मिलित समय कैसे प्राप्त करें?

  • आईटीईआर/सेकंड: 1600
  • औसत: 600μs
  • 95 प्रतिशत: 600μs
  • 99 प्रतिशत: 5000μs
  • अधिकतम: 50 000μs

यहाँ मेरी समस्या यह है कि कभी-कभार मैं देर से प्राप्त एक "बुरा" है ncy (50ms), मेरा लक्ष्य एक उच्च औसत की लागत पर, लगातार विलंबता होने वाला है।

मेरा मानना ​​है कि यह जीसी के कारण होता है, और मैं सोच रहा हूं कि इससे बचा जा सकता है या नहीं।

(एक तरफ ध्यान दें के रूप में, यह एक अच्छा अभ्यास एक नोड के लिए आवेषण का एक बड़ा राशि भेजने के लिए और यह ग्राहक में इसे संभाल या चाहिए मैं "लोड संतुलन" यह बताने के लिए है?)

+0

क्या आप हमें बता सकते हैं कि आपने जीसी को कैसे ट्यून किया? Thx – odiszapc

उत्तर

2

50ms युवा पीढ़ी के कचरे के संग्रह के लिए सामान्य सीमा के भीतर है। आप यह समस्या है कि यह सत्यापित करने के लिए नीचे की ओर उचित लाइनों को असम्बद्ध करके cassandra-env.sh में जीसी लॉगिंग सक्षम कर सकते हैं।

(Flushes आवेषण ब्लॉक नहीं जब तक कि आपके डिस्क तो यह डालने मात्रा है, जो असामान्य है के बाद से flushes अनुक्रमिक मैं/हे हैं के साथ नहीं रख सकते हैं धीमी गति से हो रहा है।)

युवा पीढ़ी संग्रह वास्तव में के साथ सहसंबद्ध रहे हैं उच्च लेटेंसीज, आप थ्रूपुट के लिए ट्रेडिंग विलंबता की संभावित लागत पर, युवा पीढ़ी को छोटे (cassandra-env.sh में भी कॉन्फ़िगर किया गया) बनाने का प्रयास कर सकते हैं।

+0

मैं पहले से ही जीसी अनुकूल चरण के माध्यम से गया हूं और जीसी समय को तेज करने के लिए न्यूनतम युवा पीढ़ी की जगह है। तो मुझे लगता है कि इससे इससे बेहतर कोई फायदा नहीं होगा: / – alprema

1

मैं डॉन ' टी सोचते हैं कि आप एक बार में खराब विलंबता मुद्दे से दूर हो पाएंगे। यह संभवतः जीसी होने का सबसे अधिक संभावना है, या जब यह Memtables से डिस्क पर फ्लश कर रहा है।

क्या 50ms का बुरा सम्मिल वास्तव में एक समस्या है? कैसंड्रा बैच म्यूटेटर का समर्थन करता है जो आपको एक लंबे म्यूटेटर में अपने सम्मिलित संचालन को कतारबद्ध करने की अनुमति देता है और उसके बाद बाद में आवेषण का बैच निष्पादित करता है ताकि आपके मुख्य थ्रेड को सिंक्रोनस डालने से अवरुद्ध होने की आवश्यकता न हो जो लंबे समय से अधिक समय ले सकता है अपेक्षित होना। मैंने कैसंदर शार्प का उपयोग नहीं किया है, इसलिए यह नहीं पता कि यह इस कार्यक्षमता का खुलासा करता है या नहीं।

इसके अलावा, कैसंड्रा नोड्स में लोड-बैलेंसिंग आपके आयात के समय में थोड़ा सुधार करेगा, लेकिन याद रखें कि दृश्यों के पीछे क्या चल रहा है यह है कि जिस नोड में आप आयात प्रदान करते हैं, वह भंडारण करने के लिए सही नोड को सौंप देगा (इसलिए नोड जिसे आप वास्तव में प्रॉक्सी के रूप में कार्य करने के लिए देते हैं) इसलिए मैं सामान्य किनारे के मामले में ज्यादा सुधार की कल्पना नहीं करता। यह आपकी मदद करेगा अगर किसी कारण से नोड अन्य चीजें करना शुरू कर देता है और इसका प्रदर्शन पीड़ित होता है।

0

यदि आप विश्वसनीय सम्मिलित समय में रूचि रखते हैं, तो आप कैसंड्रा के एक्यूनु वितरण को देखना चाहते हैं, जो आवेषण पर 100x अधिक स्थिर विलंबता प्रदान करता है: Cassandra under Heavy Write Load (नोट विशेष रूप से दूसरी तस्वीर)।

+0

ध्यान दें कि इस बेंचमार्क को कैसंड्रा 1.0 में मेमटेबल्स के लिए क्षेत्र आवंटन के परिचय से अप्रचलित किया गया है, जिसने यहां देखी गई पुरानी पीढ़ी के जीसी पॉज़ को रोक दिया। (विवरण: https: //issues.apache।संगठन/जिरा/ब्राउज़/कैसंद्रा -2252) – jbellis

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