2011-06-23 17 views
7

मैं वर्तमान में डेटाबेस रेडिस (स्थानीय पर) में चाबियों का सम्मिलन परीक्षण कर रहा हूं। मेरे पास 5 मिलियन से अधिक कुंजी हैं और मेरे पास सिर्फ 4 जीबी रैम है इसलिए एक पल में मैं रैम की क्षमता तक पहुंचता हूं और (और मेरा पीसी नीचे चला जाता है) (रेडिस - मेमोरी उपयोग की निगरानी

मेरी समस्याग्रस्त: मैं निगरानी स्मृति कैसे बना सकता हूं मशीन पर उपयोग जिसमें रेडिस डेटाबेस है, और इस तरह से रेडिस डेटाबेस में कुछ और कुंजी डालने की चेतावनी नहीं है?

धन्यवाद।

उत्तर

4

स्मृति के उपयोग के संबंध में, मैं redis.io FAQ और इस लेख के बारे में using redis as a LRU cache को देखने के लिए आपको सलाह चाहते हैं।

आप या तो अधिकतम स्मृति कॉन्फ़िगरेशन सेटिंग के माध्यम से स्मृति उपयोग को कैप कर सकते हैं, जिस स्थिति में स्मृति सीमा तक पहुंचने के बाद सभी लिखने के अनुरोध एक त्रुटि के साथ विफल हो जाएंगे, या आप maxmemory-policy को allkeys-lru में सेट कर सकते हैं, उदाहरण के लिए , वर्तमान में आवश्यक सामग्री के साथ सर्वर पर कम से कम हाल ही में उपयोग किए गए डेटा को ओवरराइट करना प्रारंभ करने के लिए, आदि। अधिकांश उपयोग मामलों के लिए उचित कॉन्फ़िगरेशन के माध्यम से ऐसी समस्याओं को संभालने के लिए आपके पास पर्याप्त लचीलापन है।

मेरी सलाह है कि चीजों को सरल रखना और ओएस-स्तरीय निगरानी या इसी तरह के माध्यम से अतिरिक्त जटिलता को पेश करने के बजाय रेडिस सर्वर की कॉन्फ़िगरेशन के माध्यम से इस समस्या का प्रबंधन करना है।

+0

धन्यवाद की निगरानी के लिए और अधिक विस्तृत विवरण पढ़ें। मैं अलग-अलग समाधान देखूंगा, विशेष रूप से लालसा को एलआरयू कैश के रूप में उपयोग करने के बारे में लेख का उपयोग करके (मैंने इसे पहले नहीं देखा है) – kozher

4

vmstat नामक एक अच्छी यूनिक्स उपयोगिता है। यह शीर्ष लेकिन कमांड लाइन की तरह है, इसलिए आप स्मृति उपयोग प्राप्त कर सकते हैं और सिस्टम बंद होने से पहले तैयार रह सकते हैं। विशिष्ट प्रक्रिया के बारे में यह जानकारी प्राप्त करने के लिए आप ps v PID का भी उपयोग कर सकते हैं। Redis के पीआईडी ​​इस तरह से प्राप्त किया जा सकता है: pidof redis-server

1

मेमोरी रेडिस प्रदर्शन के लिए एक महत्वपूर्ण संसाधन है। प्रयुक्त स्मृति रेडिस द्वारा आवंटित बाइट्स की कुल संख्या को अपने आवंटक (या तो मानक libc, jemalloc, या tcmalloc जैसे वैकल्पिक आवंटक) का उपयोग करके परिभाषित करता है।

आप "स्मृति स्मृति" चलाकर रेडिस इंस्टेंस के लिए सभी मेमोरी उपयोग मीट्रिक डेटा एकत्र कर सकते हैं।

 
127.0.0.1:6379> info memory 
Memory 
used_memory:1007280 
used_memory_human:983.67K 
used_memory_rss:2002944 
used_memory_rss_human:1.91M 
used_memory_peak:1008128 
used_memory_peak_human:984.50K 

कभी कभी, जब Redis किसी अधिकतम स्मृति सीमा के साथ कॉन्फ़िगर किया गया है, स्मृति उपयोग अंततः सिस्टम स्मृति तक पहुंच जाएगा, और सर्वर त्रुटियों "मेमोरी से बाहर" फेंक शुरू कर देंगे। दूसरी बार, रेडिस को अधिकतम मेमोरी सीमा के साथ कॉन्फ़िगर किया गया है लेकिन उपन्यास नीति। इससे सर्वर किसी भी कुंजी को बेदखल नहीं करेगा, इस प्रकार स्मृति को मुक्त होने तक किसी भी लेखन को रोक देगा। ऐसी समस्याओं का समाधान अधिकतम स्मृति और कुछ निष्कासन नीति के साथ रेडिस को कॉन्फ़िगर करेगा। इस मामले में, सर्वर बेदखल नीति का उपयोग करके कुंजी को बेदखल करना शुरू कर देता है क्योंकि स्मृति उपयोग अधिकतम तक पहुंच जाता है।

मेमोरी आरएसएस (निवासी सेट साइज) बाइट्स की संख्या है जो ऑपरेटिंग सिस्टम को रेडिस को आवंटित किया गया है। यदि 'memory_rss' से 'memory_used' का अनुपात ~ 1.5 से बड़ा है, तो यह स्मृति विखंडन को दर्शाता है। खंडित स्मृति को सर्वर को पुनरारंभ करके पुनर्प्राप्त किया जा सकता है।

रेडिस सर्वर here

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