क्या वहां कोई उपकरण है जिसका उपयोग मैं यह पता लगाने के लिए कर सकता हूं कि रेडिस कितनी मेमोरी ले रही है?प्रोफाइलिंग रेडिस मेमोरी उपयोग
उत्तर
यदि loglevel
verbose
या 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 किलोबाइट्स)।
https://github.com/sripathikrishnan/redis-rdb-tools
Rdb उपकरण डेटाबेस में प्रत्येक कुंजी = मान जोड़ी द्वारा प्रयुक्त स्मृति की रिपोर्ट देखें। यह एक रेडिस डंप फ़ाइल का विश्लेषण करता है, और एक सीएसवी फ़ाइल बनाता है। इस सीएसवी फ़ाइल में प्रत्येक पंक्ति एक कुंजी है, और कॉलम में उस कुंजी से उपभोग की गई स्मृति होती है।
आप परिणामों को कुंजी या डेटाटाइप पर फ़िल्टर कर सकते हैं। चूंकि टूल डंप फ़ाइल पर चलता है, इसलिए यह आपके रेडिस सर्वर के प्रदर्शन को प्रभावित नहीं करता है।
हालांकि याद रखने के लिए एक बिंदु - स्मृति उपयोग की सूचना एक अनुमान है। मेरे प्रयोगों के आधार पर, मुझे वास्तविक स्मृति उपयोग उपकरण द्वारा रिपोर्ट की गई तुलना में लगभग 15% अधिक पाया गया है।
आप छोटे ज्ञात (और संभवतः परिवर्तनीय) 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 ("उपसर्ग *") के साथ उपसर्ग के लिए सभी कुंजी प्राप्त कर सकते हैं और प्रत्येक को जांचने के लिए अन्य रेडिस कमांड का उपयोग कर सकते हैं।
न केवल कुंजी-मूल्य कुंजी समय लेती है। अन्य प्रकार की डेटा संरचनाएं 'कुंजी' कमांड में दिखाई नहीं देगी। –
देखें https://github.com/gamenet/redis-memory-analyzer
आरएमए कुंजी पैटर्न द्वारा वास्तविक समय और कुल स्मृति उपयोग आँकड़ों में Redis कुंजी अंतरिक्ष स्कैन करने के लिए एक सांत्वना उपकरण है। आप उत्पादन सर्वर पर रखरखाव के बिना इस उपकरण का उपयोग कर सकते हैं।
आप "स्ट्रिंग", "हैश", "सूची", "सेट", "जेसेट" जैसे सभी या चयनित रेडिस प्रकारों द्वारा स्कैन कर सकते हैं और जैसा चाहें मिलान पैटर्न का उपयोग कर सकते हैं।
इसके अलावा आरएमए पैटर्न द्वारा प्रमुख नामों को समझने का प्रयास करता है, उदाहरण के लिए यदि आपके पास 'उपयोगकर्ता: 100' और 'उपयोगकर्ता: 101' जैसी चाबियां हैं तो आउटपुट में सामान्य पैटर्न 'उपयोगकर्ता: *' चुनेंगे ताकि आप अधिकतर विश्लेषण कर सकें आपके उदाहरण में स्मृति परेशान डेटा।
ध्यान दें कि 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"
आप भी कैसे इस स्मृति अपनी चाबी के बीच वितरित किया जाता है में रुचि रखते हैं, तो आप 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 |
- 1. रेडिस - मेमोरी उपयोग की निगरानी
- 2. रेडिस मेमोरी ऑप्टिमाइज़ेशन
- 3. बेहतर फ्लेक्स मेमोरी प्रोफाइलिंग टूल
- 4. रेडिस: डाटाबेस आकार मेमोरी अनुपात?
- 5. प्रत्येक डेटाबेस के लिए रेडिस में मेमोरी उपयोग
- 6. node.js में रेडिस-समर्थित "क्यू" लाइब्रेरी का उपयोग करना - मेरा रेडिस मेमोरी उपयोग क्यों बढ़ता जा रहा है?
- 7. रूबी 1.9.3 रेल के साथ संगत मेमोरी प्रोफाइलिंग टूल
- 8. नोडजेस + पासपोर्ट.जेएस + रेडिस: रेडिस
- 9. रेडिस
- 10. रेडिस
- 11. रेडिस
- 12. रेडिस
- 13. रेडिस
- 14. रेडिस
- 15. रेडिस
- 16. सेलेरी और रेडिस मेमोरी से बाहर चलते रहें
- 17. रेडिस
- 18. प्रोफाइलिंग सी ++ बहु थ्रेडेड अनुप्रयोग
- 19. रेडिस
- 20. रेडिस
- 21. रेडिस
- 22. रेडिस
- 23. रेडिस
- 24. रेल मेमोरी उच्च मेमोरी उपयोग
- 25. प्रोफाइलिंग अवधारणाएं प्रोफाइलिंग के लिए उपयोगी हैं?
- 26. ग्राफिक्स प्रोफाइलिंग
- 27. प्रोफाइलिंग उपकरण?
- 28. क्रोम एप्लिकेशन प्रोफाइलिंग
- 29. प्रोफाइलिंग मेवेन
- 30. प्रोफाइलिंग सी ++?
यह एक बहुत मददगार था, धन्यवाद। –