2012-08-09 16 views
6

मुझे कैसंड्रा पढ़ने के प्रदर्शन में सुधार करने में कुछ मदद की ज़रूरत है। मैं कॉलम परिवार के आकार के आकार के रूप में पढ़ने के प्रदर्शन के अवक्रमण के बारे में चिंतित हूं। हमारे पास एकल-नोड कैसंद्रा पर निम्न आंकड़े हैं।कैसंद्रा अमेज़ॅन ईसी 2, प्रदर्शन प्रयोग

ऑपरेटिंग सिस्टम: लिनक्स - CentOS रिलीज 5.4 (अंतिम)
कैसेंड्रा संस्करण: अपाचे-कैसेंड्रा-1.1.0
जावा संस्करण: "1.6.0_14" जावा (टीएम) एसई रनटाइम पर्यावरण (निर्माण 1.6.0_14-B08) जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वी एम (, मिश्रित मोड का निर्माण 14.0-B16)

कैसेंड्रा विन्यास: (cassandra.yaml)

  • rpc_server_type: hsha
  • disk_access_mode: mmap
  • concurrent_reads: 64
  • concurrent_writes: 32

प्लेटफार्म: अमेज़न-EC2/RightScale m1.Xlarge 4 अल्पकालिक डिस्क के साथ उदाहरण RAID0 के साथ। (15 जीबी कुल मेमोरी, 4 आभासी कोर, 2 ईसीयू, कुल ईसीयू = 8)


प्रयोग विन्यास: मैं

कैसेंड्रा config जीसी के साथ कुछ प्रयोग करने की कोशिश की है:
10 जीएस रैम को कैसंद्रा हीप को आवंटित किया गया है, 3500 एमबी हेप का नया आकार है।

JVM कॉन्फ़िग:
JVM_OPTS = "$ JVM_OPTS -XX: + UseParNewGC"
JVM_OPTS = "$ JVM_OPTS -XX: + UseConcMarkSweepGC"
JVM_OPTS = "$ JVM_OPTS -XX: + CMSParallelRemarkEnabled"
JVM_OPTS = "$ JVM_OPTS -XX: SurvivorRatio = 1000"
JVM_OPTS = "$ JVM_OPTS -XX: MaxTenuringThreshold = 0"
JVM_OPTS = "$ JVM_OPTS -XX: CMSInitiatingOccupancyFraction = 40"
JVM_OPTS = "$ JVM_OPTS -XX: + UseCMSInitiatingOccupancyOnly -XX: + UseCompressedOops "
OpsCenter समुदाय 2.0 से
परिणाम आंकड़े:

पढ़ें 208 अनुरोध करने के लिए प्रति सेकंड
ओएस लोड 24.5 प्रति सेकंड
लिखें 240 करने के लिए 18 से 28 25 से अनुरोध।85
लिखें अनुरोध विलंबता 127 160 माइक्रो
पढ़ें अनुरोध विलंबता 82,202 94612 करने के लिए माइक्रो
ओएस भेजा नेटवर्क यातायात प्रति सेकंड
ओएस प्राप्त नेटवर्क यातायात 4338 KB औसत प्रति सेकंड
ओएस डिस्क कतार आकार 13 से 15 करने के लिए 44646 KB औसत
पढ़ें लंबित अनुरोध का अनुरोध करता है 25 से 32

ओएस डिस्क विलंबता 48 से 56 एमएस
ओएस डिस्क पढ़ें प्रवाह क्षमता प्रति सेकंड
डिस्क IOPS 4.6 एमबी प्रति सेकंड पुस्तकें 0,123,

IOWait 80% सीपीयू औसत

निष्क्रिय 13% सीपीयू औसत

Rowcache अक्षम है।


कॉलम परिवार
स्तंभ परिवार मैं केवल से CLI के माध्यम से बनाई गई है पढ़ रहा हूँ से एक

create column family XColFam 
with column_type='Standard' 
and comparator = CompositeType(BytesType,IntegerType)';" 

कॉलम परिवार SSTable आकार = 7.10 जीबी, SSTable गणना = 2

XColFam कॉलम परिवार में 5949 9 0 9 4 नंबर है। अनुमानित पंक्ति कुंजियों (अधिकांश यूएफएफ 8 शाब्दिक हैं, जो एमएक्स 4jtools के माध्यम से अनुमानित हैं) प्रकृति में पतली कॉलम के साथ, मूल्य 0 बाइट्स ..... के साथ अब।

अधिकांश पंक्तियों में स्तंभों की बहुत छोटी संख्या होनी चाहिए, शायद 1 से 10, इसलिए कॉलम नाम के पहले घटक के लगभग 20 से 30 बाइट और दूसरा 8 बाइट्स पूर्णांक है .... समग्र कॉलम का दूसरा घटक गतिशील दोहरा सकता है लेकिन संभावना कम है ....... पहली घटक किस्मों में दोहराती है लेकिन पंक्तियों में स्तंभों की संख्या अलग हो सकती है।

मैंने कॉलम परिवार को संपीड़ित करने के लिए SnappyCompression को आजमाया है लेकिन आकार में कोई बदलाव नहीं आया है।

मैं एक अनुसूचित सेवा है कि 20 धागे के साथ घंटे के लिए चलाने के लिए और इस स्तंभ परिवार के लिए (अब अपने 2 अनुरोध के अनुसार चाबी के लिए) एकाधिक चाबी के लिए यादृच्छिक पढ़ने अनुरोध करने और पढ़ने के पूर्ण पंक्तियाँ, कोई स्तंभ टुकड़ा या आदि

मुझे लगता है कि यह अब अच्छा प्रदर्शन नहीं कर रहा है क्योंकि यह प्रति मिनट बहुत कम अनुरोध संसाधित कर रहा है। इससे पहले कि कॉलम परिवार का आकार इतना बड़ा नहीं था, यह बेहतर काम कर रहा था। यह लगभग 3 से 4 जीबी था।

मुझे डर है कि कॉलम परिवार के आकार में वृद्धि के साथ पढ़ने के प्रदर्शन में तेजी से गिरावट आई है।

मैंने कुछ जीसी और मेमोरी सामान को ट्विक करने की भी कोशिश की है, क्योंकि इससे पहले मुझे बहुत सी जीसी और सीपीयू उपयोग था। जब डेटा का आकार छोटा था और तरंग रूप में बहुत छोटा iowait था।


मैं कैसंद्रा प्रदर्शन कैसे बढ़ा सकता हूं। आपके सुझावों की सराहना की जाएगी।

+0

अनुरोध पढ़ें लेटेंसी 82202 से 94612 माइक्रो ... 82 सेकंड विलंबता? – Crowie

उत्तर

0

देखो कैसेंड्रा रिश्तेदार आई/ओ dependent.EC इंस्टेंस "insuficient" मैं/डिजाइन (एक्सईएन वर्चुअलाइजेशन) द्वारा हे और मेरी पहली खुलने और असली हार्डवेयर पर कैसेंड्रा उपयोग करने के लिए, आप एक नियंत्रण है जहां है। उदाहरण के लिए आप CommitLog के लिए एसएसडी डिस्क का उपयोग कर सकते हैं। Cassandra hardware proposals पर देखें।

हालांकि, अपने हार्डवेयर पर स्विच करना थोड़ा कट्टरपंथी विकल्प है। अमेज़न के साथ रहने के लिए कोशिश EBS

अमेज़न लचीला ब्लॉक स्टोर (EBS) अमेज़न EC2 उदाहरणों साथ प्रयोग के लिए ब्लॉक स्तर भंडारण की मात्रा प्रदान करता है। अमेज़ॅन ईबीएस वॉल्यूम नेटवर्क से जुड़े हुए हैं, और उदाहरण के जीवन से स्वतंत्र रूप से बने रहते हैं। अमेज़ॅन ईबीएस अत्यधिक उपलब्ध, अत्यधिक विश्वसनीय, अनुमानित स्टोरेज वॉल्यूम प्रदान करता है जिसे चल रहे अमेज़ॅन ईसी 2 इंस्टेंस से जोड़ा जा सकता है और उदाहरण के भीतर डिवाइस के रूप में उजागर किया जा सकता है। अमेज़ॅन ईबीएस विशेष रूप से उन अनुप्रयोगों के लिए उपयुक्त है जिनके लिए डेटाबेस की आवश्यकता होती है, फ़ाइल सिस्टम, या कच्चे ब्लॉक स्तर संग्रहण तक पहुंच।

अमेज़न EBS आप 1 जीबी से 1 टीबी कि अमेज़न EC2 उदाहरणों द्वारा उपकरणों के रूप में स्थापित किया जा सकता करने के लिए भंडारण की मात्रा बनाने के लिए अनुमति देता है। एक ही उदाहरण में एकाधिक वॉल्यूम आरोहित किए जा सकते हैं। अस्थायी आईओपीएस वॉल्यूम चुनकर, अमेज़ॅन ईबीएस वांछित होने पर I/O प्रदर्शन के विशिष्ट स्तर को प्रावधान करने में सक्षम बनाता है। यह आपको अनुमानित रूप से अमेज़ॅन ईसी 2 उदाहरण प्रति हजारों आईओपीएस तक स्केल करने की अनुमति देता है। पंक्ति कैश और कुंजी कैश:

इसके अलावा Cassandra Performance Testing on EC2

+0

प्रकृति द्वारा एफेरमल ec2 उदाहरण ईबीएस से तेज होंगे और RAID10 के बिना वे ईबीएस बुलबुले (हैंग या टाइमआउट) के लिए अतिसंवेदनशील होंगे। उस ने कहा कि एसएसडी उदाहरणों के साथ फाई उदाहरण तेजी से तेज हैं – David

+0

@ ecav में डेविड भी "प्रकृति" वर्चुअलाइज्ड है;) लेकिन आप सही हैं। वे तेज़ हैं और उनके पास बेहतर क्रूटपूट है। लेकिन ईबीएस RAID यादृच्छिक खोज क्रिटपुट [यहां तुलना की गई] द्वारा बेहतर प्रदर्शन करता है (http://victortrac.com/blog/2010/01/02/ec2-ephemeral-disks-vs-ebs-volumes-in-raid/)। यह ओवरल कैसंद्रा प्रदर्शन के लिए अधिक मूल्यवान हो सकता है। – aholbreich

0

लघु उत्तर की जाँच करें।

यदि आपके डेटा में सबसेट हैं जो अक्सर अधिकांश सिस्टम की तरह पढ़ते हैं जैसे पंक्ति कैश और कुंजी कैश का उपयोग करने का प्रयास करें।

पंक्ति कैश मेमोरी कैश में एक है, जो स्मृति में पूरी तरह से पढ़ने वाली पंक्तियों को पूरी तरह से संग्रहीत करता है। कृपया ध्यान रखें, यदि आपका डेटा फैल गया है तो इसका वांछित प्रभाव नहीं हो सकता है।

कुंजी कैश आम तौर पर अधिक अनुकूल होते हैं क्योंकि यह केवल डिस्क पर विभाजन कुंजी और उनके ऑफसेट को संग्रहीत करता है। यह आम तौर पर कैसंड्रा द्वारा एक लुकअप को छोड़ने में मदद करेगा (विभाजन अनुक्रमणिका और विभाजन सारांश का उपयोग करने की आवश्यकता नहीं है)।

कुंजीपटल को कुंजीपटल और तालिका के साथ सक्षम करने का प्रयास करें और अपना प्रदर्शन देखें।

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