পুনরায়: কীগুলির জন্য ডাটাবেসের আকার / আকার দেখান


91

আমার রেডিস উদাহরণটি খুব বড় হয়ে উঠছে বলে মনে হচ্ছে এবং সেখানে থাকা একাধিক ডাটাবেসের মধ্যে আমি কত স্মৃতি ব্যবহার করেছি তা খুঁজে বের করতে চাই। রেডিসের INFOকমান্ডটি কেবলমাত্র আমাকে মোট আকার এবং ডাটাবেস প্রতি কীগুলির সংখ্যা দেখায় যা আমাকে বেশি অন্তর্দৃষ্টি দেয় না ... তাই কোনও সরঞ্জাম / ধারণা যা রেডিস সার্ভারটি নিরীক্ষণ করার সময় আমাকে আরও তথ্য দেয়।

রেডিস ডকুমেন্টেশন আমাকে এমন কোনও কমান্ড দেখায় না যা নির্দিষ্ট কীগুলির গ্রাস করা স্মৃতি ফিরিয়ে দিতে পারে, সুতরাং আমি অনুমান করি যে কোনও বগি কোডটি "ট্র্যাশ" লিখে আবার লিখতে পারলে এটি খুঁজে পাওয়া সত্যিই কঠিন হতে পারে ...

উত্তর:


115

সুতরাং আমার নিজের সমস্যার সমাধান: redis-cliকিছুটা দীর্ঘ সময় নিয়ে খেলা করার পরে আমি জানতে পারলাম কী এর চাবির DEBUG OBJECT <key>মতো কিছু প্রকাশ পেয়েছে serializedlength, যা আসলে আমি খুঁজছিলাম এমন কিছু ছিল ...

পুরো ডাটাবেসের জন্য আপনাকে সমস্ত মান একত্রিত KEYS *করতে হবে যার জন্য আপনার পছন্দের স্ক্রিপ্টিং ভাষার সাথে খুব কঠিন হওয়া উচিত নয় ...

খারাপ জিনিস হ'ল redis.io এর সম্পর্কে সত্যিকার অর্থে প্রচুর তথ্য নেই DEBUG OBJECT


4
ক্রমিকায়িত দৈর্ঘ্য কি পুরো বস্তুর আকার, বাইটে?
রাফিয়ান

18
@ বার্নহার্ডভ্যালান্ট, উত্তরের জন্য ধন্যবাদ। আমি এগিয়ে গিয়ে একটি দ্রুত স্ক্রিপ্ট লিখেছিলাম যা সমস্ত কী এবং তাদের আকারগুলি মানব পাঠযোগ্য বিন্যাসে মুদ্রণ করে। ভেবেছিলাম ভাগ করে নেব। :) gist.github.com/epic সংরক্ষণ
ব্রেন্ট ও'কনোর

13
সিরিয়ালযুক্ত দৈর্ঘ্যের মান মেমরির আকার সম্পর্কে নয়! ডিস্কের কোনও আরডিবি ফাইলে সংরক্ষণ করার সময় কোনও অবজেক্ট এটি আকার নিতে পারে। উত্স কোডটি পরীক্ষা করুন: github.com/antirez/redis/blob/… এবং github.com/antirez/redis/blob/…
হুগো টাভারেস

মেমরিতে কী বা মান বা কী-মানটির আকার পাওয়ার কোনও উপায় বলে মনে হচ্ছে না (ডিস্কে ফেলে দেওয়া আকার নয়)
অ্যাভনার বার

4
এফওয়াইআই: এডাব্লুএস এলাস্তিচি রেডিস, ডকসস.আওজ.ম্যাজন / আমাজন ইলাস্টিচি / স্লেট / ইউজারগুইড / onএ ডিইবিইউজি-র সাথে কিছু করার চেষ্টা করবেন না । এমনকি রেডিস-ক্লিপ পাওয়া গেছে
বিগকিগুলি

73

মন্তব্যগুলির সমাধানটি তার নিজস্ব উত্তরটির দাবি রাখে:

redis-cli --bigkeys

4
বড় কীগুলি কীটির আকার সম্পর্কে হয় , সঞ্চিত মানের আকার নয় .. সুতরাং আপনার কাছে a4 জিবি মান সহ একটি কী থাকতে পারে তবে এটি বিগকিজে প্রদর্শিত হবে না। (এটি gist.github.com/michael-grunder/9257326 এবং ডকস.আরডিসলবস. com / latest/ ri / memory- optimizations / দ্বারা চলছে )
EoghanM

41

MEMORY USAGE key কমান্ড আপনাকে কোনও বাইটের সংখ্যা দেয় যা কোনও কী এবং এর মানটি র‍্যামে সঞ্চয় করতে হয়।

রিপোর্ট করা ব্যবহার হ'ল ডেটা এবং প্রশাসনিক ওভারহেডগুলির জন্য মোট মেমরি বরাদ্দ যা একটি কী এর মান প্রয়োজন (উত্স redis ডকুমেন্টেশন)


13
এটি কেবল সংস্করণ> 4.0
teik

15

এই প্রকল্পটি একবার দেখুন এটি রেগেক্স এবং উপসর্গের উপর ভিত্তি করে কী স্পেসগুলি সম্পর্কে কিছু আকর্ষণীয় পরিসংখ্যানকে আউটপুট করে। এটি DEBUG OBJECTকমান্ডটি ব্যবহার করে এবং ডিবি স্ক্যান করে, কীগুলির গোষ্ঠীগুলি সনাক্ত করে এবং তারা যে স্থান গ্রহণ করছে তার শতাংশ নির্ধারণ করে।

https://github.com/snmaynard/redis-audit

আউটপুট এর মতো দেখাচ্ছে:

Summary  

---------------------------------------------------+--------------+-------------------+---------------------------------------------------  
Key                                                | Memory Usage | Expiry Proportion | Last Access Time                                    
---------------------------------------------------+--------------+-------------------+---------------------------------------------------  
notification_3109439                               | 88.14%       | 0.0%              | 2 minutes                               
user_profile_3897016                               | 11.86%       | 99.98%            | 20 seconds  
---------------------------------------------------+--------------+-------------------+---------------------------------------------------  

বা এটির একটি : https://github.com/sripathikrishnan/redis-rdb-tools যা ডাম্প.আরডিবি ফাইল অফলাইনে বিশ্লেষণ করে পুরো কী স্পেসের উপর সম্পূর্ণ বিশ্লেষণ করে। এই এক ভাল কাজ করে। এটি আপনাকে আপনার ডিবিতে প্রবেশের জন্য গড় / মিনিট / সর্বোচ্চ আকার দিতে পারে এবং এটি একটি উপসর্গের উপর ভিত্তি করে এটিও করবে।


8

রেডিস কীগুলি নমুনা এবং টাইপ করে তাদের গোষ্ঠীভুক্ত করা আপনাকে খুব দরকারী বলে মনে হতে পারে। সালভাতোর রেডিস-স্যাম্পলার নামে একটি সরঞ্জাম লিখেছেন যা প্রায় ১০০০০০RANDOMKEY কমান্ড জারিTYPE করে পুনরুদ্ধারকৃত কীগুলি অনুসরণ করে । কয়েক সেকেন্ড বা কয়েক মিনিটের মধ্যে, আপনার মূল ধরণের বিতরণ সম্পর্কে মোটামুটি সঠিক দৃষ্টিভঙ্গি পাওয়া উচিত।

আমি একটি এক্সটেনশন লিখেছি (দুর্ভাগ্যক্রমে কোথাও ওপেন-সোর্স নয় কারণ এটি কাজ সম্পর্কিত), যা আপনাকে কিছু কী কী অ্যাপ্লিকেশন কী (যে নামকরণ কাঠামোর নামকরণ কাঠামোর সাথে মিলিয়ে দেয়) অনুসারে কী ধরনের অ্যাপ্লিকেশন কী দেয় সে সম্পর্কে ধারণা দেয় এমন রিজেক্সগুলির মাধ্যমে কী নামের কিছুটা অন্তরীক্ষণ যোগ করে ব্যবহার করে), রেডিসে সংরক্ষণ করা হয়। রেডিস-স্যাম্পলারের আরও সাধারণ আউটপুটটির সাথে একত্রিত, এটি কী ঘটছে তার একটি খুব ভাল ধারণা দেওয়া উচিত give


7
Tks, আসলে আমার চেয়ে বেশি সাহায্য করেছেredis-cli --bigkeys
nmat

4

সম্ভবত আপনি ডিবি ফাইলে কিছু অন্তর্নির্ধারণ করতে পারেন। প্রোটোকল তুলনামূলকভাবে সহজ (এখনও ভাল নথিভুক্ত নয়), যাতে স্বতন্ত্র কীগুলি অনেক বেশি জায়গা নিচ্ছে তা নির্ধারণ করার জন্য আপনি এটির জন্য পার্সার লিখতে পারেন।


নতুন পরামর্শ:

আপনি MONITORকী লিখিত হচ্ছে তা দেখার জন্য ব্যবহার করার চেষ্টা করেছেন , লাইভ? সম্ভবত আপনি গতিতে থাকা ডেটা সহ সমস্যাটি খুঁজে পেতে পারেন।


আকর্ষণীয় বলে মনে হচ্ছে, তবে তবুও আমি সার্ভারে রেডিসের মেমরির খরচ নিরীক্ষণের একটি সহজ উপায় অনুসন্ধান করার চেষ্টা করছি ... ডাম্প পরীক্ষা করা আমার কাছে ডিবাগিংয়ের জন্য আরও ব্যবহারিক বলে মনে হচ্ছে, ডাম্প কয়েকটি বলেও উল্লেখ করবেন না জিগস এখন!
বার্নহার্ড ভালান্ট

আপনার redis মেলিং তালিকা জিজ্ঞাসা করা উচিত। আমি এর জন্য "সেরা" উত্তরটি শুনে সত্যিই আকর্ষণীয়।
ডোনাল্ড মাইনার

ইতিমধ্যে চেষ্টা করেছি INFOএবং MONITOR, তবে প্রধান সমস্যাটি হ'ল, রেডিস না দেখলে সত্যিই বড় বেড়েছে ...
বার্নহার্ড

ঠিক আছে আমি এটি তাদের মেলিং তালিকায় পোস্ট করেছি, তবে আমার নিজের থেকে একটি উত্তরও পেয়েছে ... নীচে দেখুন!
বার্নহার্ড ভালান্ট

পুনরায়। ডিবি ফাইলে অন্তঃসংশোধন - আমি ডাম্প.আরডিবি ফাইলগুলি পার্স করার জন্য একটি স্ক্রিপ্ট লিখেছি এবং প্রতিটি কী দ্বারা ব্যবহৃত আনুমানিক মেমরির প্রতিবেদন করা একটি সিএসভি ফাইল আউটপুট দেয়। Github.com/sripathikrishnan/redis-rdb-tools
কৃষ্ণন

2

আপনি redis কী এর আকার গণনা করতে নেট অ্যাপ্লিকেশন https://github.com/abhiyx/RedisSizeCalculator ব্যবহার করতে পারেন ,

এর জন্য আপনার মতামত দিতে নির্দ্বিধায় দয়া করে


2

আমি সাধারণত এই জাতীয় পরিস্থিতিতে সমস্যা সমাধানের জন্য কী স্যাম্পলিংয়ের পদ্ধতিটি পছন্দ করি।

redis-cli -p 6379 -n db_number - বিগকি

যেমন: -

redis-cli -p 6370 -n 0 - বিগকেইস


কেন এটি "কী স্যাম্পলিং" পদ্ধতি? আমি এটি খুব সীমিত মনে করি কারণ এটি কেবল আইসবার্গের ডগা দেখায়।
মিঃআর

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.