जब Redis एक बड़ा डेटासेट लोड कर रहा होता है तो कुछ लिनक्स सिस्टम बहुत धीमी हो जाती हैं


14

मुझे एक रेडिस उपयोगकर्ता से एक रिपोर्ट मिली, और मुझे यकीन नहीं है कि मुझे क्या जवाब देना है क्योंकि मैं लिनक्स और इसके अनुसूचक के क्षेत्र में विशेषज्ञ नहीं हूं, हालांकि हमें (रेडिस परियोजना के रूप में) इस तरह के मुद्दों को विशेष रूप से जानने की जरूरत है Redis Cluster के साथ भविष्य में हम एक ही समय में एक ही बॉक्स में कई Redis इंस्टेंस चलेंगे। इसलिए मैं यहां कुछ मदद मांग रहा हूं।

मुसीबत:

  • कर्नेल: "लिनक्स रेडिस 1 2.6.32-305-ec2 # 9-Ubuntu एसएमपी थू अप्रैल 15 08:05:38 यूटीसी 2010 x86_64 GNU / लिनक्स"
  • बहुत सारी मुफ्त रैम, महत्वपूर्ण I / O करने वाली कोई अन्य प्रक्रिया नहीं।
  • महत्वपूर्ण , ईसी 2 बड़े उदाहरण पर चल रहा है, वास्तविक सर्वर नहीं। मैंने कभी भी गैर-आभासी वातावरण में ऐसा कुछ नहीं देखा। EC2 का उदाहरण था: "हाई-मेमरी एक्सट्रा लार्ज इंस्टेंस 17.1 GB मेमोरी, 6.5 ECU (3.25 EC2 कंप्यूट यूनिट्स के साथ 2 वर्चुअल कोर), 420 GB लोकल इंस्टेंस स्टोरेज, 64-बिट प्लेटफॉर्म"

मूल रूप से एक बार जब आप एक बड़े Redis उदाहरण को पुनरारंभ करते हैं, तो सिस्टम इतना धीमा हो जाएगा कि आप शेल पर टाइप नहीं कर सकते। जब Redis एक इंस्टेंस को लोड करता है तो वह 100% CPU का उपयोग करता है (यह डेटा को जितनी जल्दी हो सके उतना लोड करता है) और डंप ।rdb फ़ाइल को क्रमिक रूप से पढ़ता है। I / O विशेष रूप से उच्च नहीं है क्योंकि लोडिंग CPU-बाध्य है, I / O बाध्य नहीं है।

क्यों पृथ्वी पर दो सीपीयू और बहुत सारे रैम के साथ एक बॉक्स, डिस्क पर कोई अदला-बदली नहीं, मूल रूप से इस काम के भार के साथ काम करना बंद कर देना चाहिए?

मुझे यह आभास होता है कि इसका EC2 उदाहरण के साथ बहुत कुछ है, इसलिए उपयोग की गई वर्चुअलाइजेशन तकनीक से संबंधित है, क्योंकि मैं अपने बॉक्स में Redis 24 GB डेटासेट को बिना किसी समस्या के लोड करता हूं (यहां तक ​​कि Redis के अन्य उदाहरणों के साथ) उच्च भार के साथ चल रहा है)।

किसी भी संकेत के लिए धन्यवाद!

Salvatore

संपादित करें : ट्विटर से मुझे मिली कुछ प्रतिक्रिया:

@ezmobius से: @antirez सबसे पहले यह करने की कोशिश करता है कि यह / mnt या स्थानीय पंचांग ड्राइव से यह देखने के लिए कि क्या इसकी EBS की चंचलता, 2 यह सुनिश्चित करने के लिए है कि यह "पहले लिखने का दंड" नहीं है (यदि यह है) और यदि यह है तो आपको पहले डिस्क पर 0 के dd की आवश्यकता है।

@dvirsky से: @antirez मैं वास्तव में ऐसे ec2 नोड्स पर कई रेडिस इंस्टेंस चला रहा हूं। मैंने bgsave पर कुछ मंदी देखी है लेकिन यह घटना नहीं है।

जवाबों:


4

'शीर्ष' से आउटपुट से कुछ सुराग मिल सकते हैं। शीर्ष बाईं ओर '% चोरी' लेबल के पास एक क्षेत्र है जो उसी भौतिक बॉक्स पर अन्य मेहमानों को दिए गए हार्डवेयर सीपीयू की मात्रा को दर्शाता है। मैंने इस प्रकार की धीमी गति को देखा है जब हाइपरवाइजर किसी अन्य अतिथि को अधिक सीपीयू आवंटित करने का निर्णय लेता है, खासकर जब मैं कुछ लंबे समय से चल रहे सीपीयू-गहन कार्य कर रहा हूं।

सुनिश्चित नहीं है कि आपकी समस्या है या नहीं, लेकिन यह जाँच के लायक है।


धन्यवाद केविन, यह बहुत दिलचस्प है और मैं इससे पूरी तरह से अनजान था।
एंटीरेज़

2

मैं एक EC2 उदाहरण पर एक ही मुद्दा था। यह शायद रेडिस से संबंधित नहीं है - यह तब होता है जब एक उच्च आईओ चल रहा है (जैसे। जब रेडिस एक डंप फ़ाइल लोड कर रहा है)।

अमेजन मंचों पर इस धागे को देखें : https://forums.aws.amazon.com/thread.jspa?messageID=215406

मैंने विभिन्न कर्नेल / चित्रों के साथ प्रयोग किया है और अब यह ठीक चलता है (एक पुराने 2.6.21 कर्नेल पर)।


धन्यवाद mhdk, मेरा अनुमान यह भी है कि यह वर्चुअलाइजेशन + लिनक्स अनुसूचक से संबंधित है। यहां तक ​​कि धीमी डिस्क के साथ I / OI किसी भी कारण से नहीं देख सकता है कि अन्य प्रक्रियाएं ब्लॉक हो जाएंगी यदि वे डिस्क का उपयोग नहीं कर रहे हैं और कोई स्वैप किए गए पृष्ठ नहीं हैं। विभिन्न गुठली / अनुसूचक विन्यास की कोशिश करना शायद वास्तव में एक कोशिश के लायक है।
एंटीरेज़

2

आपको सीपीयू चोरी ( xx.x%stसीपीयू लाइन के दाईं ओर) की जांच करनी चाहिए जो topदिखाता है कि आप 100% लोड और जमे हुए शेल का अनुभव करते हैं। चोरी का प्रतिनिधित्व करता है कि आपके वास्तविक सीपीयू चक्र आपके मशीन से एक हाइपरविजर द्वारा चोरी किए जाते हैं और दूसरी मशीन को दिए जाते हैं। सीपीयू चोरी केवल वर्चुअलाइज्ड वातावरण में प्रासंगिक है। मेरे पास सूक्ष्म उदाहरणों के साथ सटीक मुद्दा था और जो मूल रूप से सीपीयू के गहन कार्यों को करते हुए लगभग 1 घंटे या तो (जब तक कि मेरे कार्य के पूर्ण होने तक) के लिए मेरी आवृत्ति अनुपयोगी थी।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.