মংগোডিবি সমস্ত উপলভ্য র‌্যাম ব্যবহার করছে না


9

আমার কাছে একটি মোঙ্গো ক্লাস্টারে প্রায় 200 গিগাবাইট মূল্যবান ডেটা রয়েছে। মঙ্গো চালিত একটি দৃষ্টান্তের শারীরিক স্মৃতিটি 8 গিগাবাইট। অন্য কোনও পরিণতি এই উদাহরণে চালিত হয় না। মোঙ্গোর ডক্সের উপর ভিত্তি করে আমি যতটা বুঝতে পারি ( এটির মতো: http://www.mongodb.org/display/DOCS/Checking+Server+Mameory+Usage ) এর অর্থ এই যে মঙ্গোদ প্রক্রিয়াটি প্রায় 100% ব্যবহার করা উচিত উপলব্ধ শারীরিক স্মৃতি। তবে আপনি যদি topআদেশটি থেকে নিম্নলিখিত আউটপুটটি দেখেন তবে আপনি দেখতে পাবেন যে মঙ্গোদ উদাহরণটি কেবল 2 জিবি রেসিডেন্ট মেমরি ব্যবহার করছে এবং এতে একটি সম্পূর্ণ 2 জিবি ফ্রি শারীরিক মেমরি উপলব্ধ রয়েছে যা মোটেও ব্যবহৃত হচ্ছে না।

কেউ আমাকে এই আচরণ ব্যাখ্যা করতে পারেন? 2 জিবি ফ্রি মেমরি কেন?

top আউটপুট:

top - 23:19:43 up 89 days, 20:05,  2 users,  load average: 0.41, 0.55, 0.59
Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.0%us,  1.3%sy,  0.0%ni, 93.9%id,  2.6%wa,  0.0%hi,  0.1%si,  0.0%st
Mem:   8163664k total,  6131764k used,  2031900k free,    54976k buffers
Swap: 16771848k total,    10604k used, 16761244k free,  5367700k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                             
 1401 mongodb   20   0  174g 2.0g 1.9g S   23 26.2  18070:55 mongod
 ...

সিস্টেমের তথ্য:

$ uname -a
Linux aluminum 2.6.32-31-server #61-Ubuntu SMP Fri Apr 8 19:44:42 UTC 2011 x86_64 GNU/Linux

মন্তব্য:

  • এই ক্লাস্টারে আরও একটি উদাহরণ রয়েছে যেখানে আমি আশা করি এবং উপলব্ধ সমস্ত স্মৃতি ব্যবহার করে মঙ্গোদ আচরণ করে।
  • মঙ্গোস্ট্যাট দেখে মনে হচ্ছে ধারাবাহিকভাবে কিছু পৃষ্ঠা-ফল্ট হচ্ছে, সুতরাং ব্যবহৃত মেমরির পরিমাণটি বাড়ানো উচিত :
  • (আমি একই প্রশ্নটি মঙ্গোদব-ব্যবহারকারী গুগল গ্রুপে জিজ্ঞাসা করেছি তবে কোনও উত্তর পাইনি got)

কি লিনাক্স ডিস্ট্রো? এটি 32 বা 64-বিট? (আপনার প্রশ্নটি আউটপুট দিয়ে সম্পাদনা করুন lsb-release -aএবং uname -aদয়া করে)
ফিলি

ধন্যবাদ। যোগ করা হয়েছে unameতবে আমি lsb-releaseইনস্টল করি না ।
ক্রিস ডব্লিউ।

আপনি কি ঘটনাক্রমে মোংগোডিবি এর 32-বিট সংস্করণটি ডাউনলোড করেছেন? 32-বিট মঙ্গোর উদাহরণটির সর্বাধিক আকার 2 জিবি।
হারুন

@ ব্রাইসএটনেটওয়ার্ক 23 নোপ; আমাদের মংডোডব মোটে অবশ্যই 2 জিবি-র বেশি রয়েছে (বেশ কয়েকটি শতাধিক জিগ আসলে)।
ক্রিস ডব্লিউ।

@ ক্রিসডব্লিউ তার অর্থ সর্বোচ্চ মেমরির আকার - ডাটাবেস আকার নয়। এবং মনে হচ্ছে এটি 2 জিবিটি ভালভাবে ব্যাখ্যা করবে।
rfusca

উত্তর:


5

আবাসিক মেমরির আকারটি mongodপ্রক্রিয়াটির দ্বারা স্পর্শকৃত মেমরির পৃষ্ঠাগুলির সংখ্যা উপস্থাপন করে । এটি যদি উপলভ্য মেমরির তুলনায় উল্লেখযোগ্যভাবে কম থাকে এবং ডেটা উপলব্ধ মেমরির চেয়ে বেশি হয়ে যায় (আপনার যা হয়) তবে এটি কেবল সক্রিয়ভাবে পর্যাপ্ত পৃষ্ঠাগুলি স্পর্শ না করার ঘটনা হতে পারে।

এটি কেস কিনা তা নির্ধারণ করার জন্য, আপনার চালানো উচিত free -m, আউটপুটটিকে এই জাতীয় কিছু দেখা উচিত:

free -m
             total       used       free     shared    buffers     cached
Mem:          3709       3484        224          0         84       2412
-/+ buffers/cache:        987       2721
Swap:         3836        156       3680

আমার উদাহরণে, ক্যাশেড মোটের খুব কাছাকাছি নয়, যার অর্থ কেবল মঙ্গোদ পর্যাপ্ত পৃষ্ঠাগুলি স্পর্শ করেনি, ফাইল সিস্টেম ক্যাশে এখনও সাধারণভাবে ডিস্ক থেকে পাতাগুলি দ্বারা পূর্ণ হয় নি।

এর দ্রুত প্রতিকার হ'ল টাচ কমান্ড (২.২-এ যুক্ত) - এটি বড় ডেটা সেটগুলিতে সতর্কতার সাথে ব্যবহার করা উচিত কারণ এটি ডেটা ফিট করার পক্ষে অনেক বেশি বড় হলেও র্যামে সবকিছু লোড করার চেষ্টা করবে (প্রচুর কারণ সৃষ্টি করবে) ডিস্ক আইও এবং পৃষ্ঠা ত্রুটি)। এটি অবশ্যই কার্যকরভাবে স্মৃতি পূরণ করবে :)

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

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