2011-04-03 10 views

उत्तर

33

INFO कमांड को देखने का प्रयास करें। मैं रेडिस मेमोरी उपयोग के बारे में this आलेख पढ़ने की भी सिफारिश करता हूं जहां आप अधिक जानकारी प्राप्त कर सकते हैं कि कितनी मेमोरी विशेष डेटा संरचनाएं ले रही है।

6

यदि loglevelverbose या debug पर सेट किया गया है तो रेडिस प्रत्येक 5 सेकंड में मेमोरी उपयोग आउटपुट करेगा।

[49523] 07 Apr 00:38:58 - DB 0: 2 keys (0 volatile) in 4 slots HT. 
[49523] 07 Apr 00:38:58 - 1 clients connected (0 slaves), 924416 bytes in use 

आप देख सकते हैं डेटाबेस में 2 चाबियाँ, और 1 से कनेक्ट किसी क्लाइंट देखते हैं कि:

उदाहरण के लिए, यह मेरा लगभग खाली डेटाबेस पर उत्पादन होता है। 924416 बाइट सक्रिय उपयोग में हैं। कुल मेमोरी उपयोग (जैसा कि used_memory_rss फ़ील्ड द्वारा दिखाया गया है INFO कमांड द्वारा लौटाया गया फ़ील्ड) थोड़ा अधिक हो सकता है (विवरण के लिए INFO दस्तावेज़ीकरण देखें)।

रेडिस में संग्रहीत डेटा को स्मृति की आवश्यकता होती है, लेकिन यह स्मृति उपयोग के लिए एकमात्र नियंत्रित कारण नहीं है। अधिक डेटाबेस कॉन्फ़िगर किए जाने के साथ, स्मृति उपयोग बढ़ता है (मेरे सिस्टम पर प्रति डेटाबेस 450 बाइट्स द्वारा)। प्रत्येक कनेक्शन मेमोरी का उपयोग करता है (मेरे सिस्टम पर प्रति कनेक्शन लगभग 8 किलोबाइट्स)।

27

https://github.com/sripathikrishnan/redis-rdb-tools

Rdb उपकरण डेटाबेस में प्रत्येक कुंजी = मान जोड़ी द्वारा प्रयुक्त स्मृति की रिपोर्ट देखें। यह एक रेडिस डंप फ़ाइल का विश्लेषण करता है, और एक सीएसवी फ़ाइल बनाता है। इस सीएसवी फ़ाइल में प्रत्येक पंक्ति एक कुंजी है, और कॉलम में उस कुंजी से उपभोग की गई स्मृति होती है।

आप परिणामों को कुंजी या डेटाटाइप पर फ़िल्टर कर सकते हैं। चूंकि टूल डंप फ़ाइल पर चलता है, इसलिए यह आपके रेडिस सर्वर के प्रदर्शन को प्रभावित नहीं करता है।

हालांकि याद रखने के लिए एक बिंदु - स्मृति उपयोग की सूचना एक अनुमान है। मेरे प्रयोगों के आधार पर, मुझे वास्तविक स्मृति उपयोग उपकरण द्वारा रिपोर्ट की गई तुलना में लगभग 15% अधिक पाया गया है।

+0

यह एक बहुत मददगार था, धन्यवाद। –

-1

आप छोटे ज्ञात (और संभवतः परिवर्तनीय) DEBUG OBJECT कमांड का उपयोग करके कुंजी के समूहों द्वारा उपयोग की गई स्मृति का एक अनुमान प्राप्त कर सकते हैं।

रूबी आईआरबी में आप इस (चेतावनी, हर कुंजी पढ़ा जाएगा, कुछ समय लग सकता है) की कोशिश कर सकते हैं:

keys = $redis.keys;nil 
map = Hash.new(0) 
keys.each{|k| map[k.split(':').first] += $redis.debug("object", k).split[4].split(':')[1].to_i rescue 0};nil 
map.sort_by{|x|x[1]} 

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

इसके बाद आप $ redis.keys ("उपसर्ग *") के साथ उपसर्ग के लिए सभी कुंजी प्राप्त कर सकते हैं और प्रत्येक को जांचने के लिए अन्य रेडिस कमांड का उपयोग कर सकते हैं।

+0

न केवल कुंजी-मूल्य कुंजी समय लेती है। अन्य प्रकार की डेटा संरचनाएं 'कुंजी' कमांड में दिखाई नहीं देगी। –

1

देखें https://github.com/gamenet/redis-memory-analyzer

आरएमए कुंजी पैटर्न द्वारा वास्तविक समय और कुल स्मृति उपयोग आँकड़ों में Redis कुंजी अंतरिक्ष स्कैन करने के लिए एक सांत्वना उपकरण है। आप उत्पादन सर्वर पर रखरखाव के बिना इस उपकरण का उपयोग कर सकते हैं।

आप "स्ट्रिंग", "हैश", "सूची", "सेट", "जेसेट" जैसे सभी या चयनित रेडिस प्रकारों द्वारा स्कैन कर सकते हैं और जैसा चाहें मिलान पैटर्न का उपयोग कर सकते हैं।

इसके अलावा आरएमए पैटर्न द्वारा प्रमुख नामों को समझने का प्रयास करता है, उदाहरण के लिए यदि आपके पास 'उपयोगकर्ता: 100' और 'उपयोगकर्ता: 101' जैसी चाबियां हैं तो आउटपुट में सामान्य पैटर्न 'उपयोगकर्ता: *' चुनेंगे ताकि आप अधिकतर विश्लेषण कर सकें आपके उदाहरण में स्मृति परेशान डेटा।

2

ध्यान दें कि Redis got a integrated memory analyzer के बाद से संस्करण 4. उपयोग:

"MEMORY USAGE <key> [SAMPLES <count>] - Estimate memory usage of key" 
    "MEMORY STATS       - Show memory usage details" 
    "MEMORY PURGE       - Ask the allocator to release memory" 
    "MEMORY MALLOC-STATS     - Show allocator internal stats" 
0

आप भी कैसे इस स्मृति अपनी चाबी के बीच वितरित किया जाता है में रुचि रखते हैं, तो आप https://github.com/alexdicianu/redis_toolkit कोशिश कर सकते हैं। यह केवल तभी काम करता है जब आपकी चाबियाँ इस पैटर्न का पालन करें ए: बी, ए: बी: सी या ए: बी: *, आदि। यदि आप वर्डप्रेस या ड्रूपल जैसे सीएमएस के लिए ऑब्जेक्ट कैशिंग इंजन के रूप में रेडिस का उपयोग कर रहे हैं तो बहुत उपयोगी है।

यहां एक नमूना है।

$ ./redis-toolkit report -type memory -name NAME 
+----------------------------------------+----------+-----------+----------+ 
|      KEY    | NR KEYS | SIZE (MB) | SIZE (%) | 
+----------------------------------------+----------+-----------+----------+ 
| posts:*        |  500 |  0.56 |  2.79 | 
| post_meta:*       |  440 |  18.48 | 92.78 | 
| terms:*        |  192 |  0.12 |  0.63 | 
| options:*        |  109 |  0.52 |  2.59 | 
संबंधित मुद्दे