মোংগোডিবি এবং ডেটাসেটগুলি যা আপনি যতই হার্ড চালান তবুও র্যামের সাথে খাপ খায় না


12

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

তবে এখন কিছু পারফরম্যান্সের বিশদ!

একটি একক প্রকল্প পরিচালিত স্বাভাবিক কর্মপ্রবাহের সময়, মঙ্গোডিবি খুব উচ্চ শতাংশের লেখক (70-80%) দিয়ে আঘাত পেয়েছে। প্রসেসিং পাইপলাইনের দ্বিতীয় পর্যায়ে একবার হিট হয়ে যাওয়ার পরে এটি প্রসেসিংয়ের প্রথমার্ধে চিহ্নিত রেকর্ডগুলি নকল করা দরকার বলে এটি অত্যন্ত উচ্চ পঠিত। এটি সেই ওয়ার্কফ্লো যার জন্য "আপনার কার্যনির্বাহী র‌্যামে রাখুন" এর জন্য তৈরি করা হয়েছে এবং আমরা সেই অনুমানের আশেপাশে নকশা করছি।

সম্পূর্ণ ডেটাসেট ক্রমাগতভাবে শেষ-ব্যবহারকারী উত্পন্ন উত্স থেকে এলোমেলো প্রশ্নের সাথে আঘাত করা হয়; যদিও ফ্রিকোয়েন্সিটি অনিয়মিত, আকার সাধারণত বেশ ছোট (10 টি নথির দল)। যেহেতু এটি ব্যবহারকারী-মুখ, তাই উত্তরগুলি 3 সেকেন্ডের "বিরক্ত-এখন" প্রান্তিকের অধীনে থাকা দরকার। এই অ্যাক্সেস প্যাটার্নটি ক্যাশে হওয়ার সম্ভাবনা খুব কম, সুতরাং ডিস্কের আঘাত হানার সম্ভাবনা খুব বেশি।

একটি গৌণ প্রক্রিয়াকরণের কর্মপ্রবাহটি আগের প্রসেসিং রানগুলি উচ্চ পঠিত যা দিন, সপ্তাহ, বা কয়েক মাস পুরানো হতে পারে এবং খুব কমই চালিত হয় তবে এখনও জিপি হওয়া দরকার। পূর্ববর্তী প্রক্রিয়াকরণ চলমান দস্তাবেজের 100% পর্যন্ত অ্যাক্সেস করা হবে। কোনও সন্দেহ নেই যে ক্যাশে-ওয়ার্মিং এটিকে সাহায্য করতে পারে, আমার সন্দেহ।

সমাপ্ত নথির আকারগুলি বিভিন্নভাবে পরিবর্তিত হয়, তবে মধ্যম আকার প্রায় 8K।

সাধারণ প্রকল্প প্রক্রিয়াজাতকরণের উচ্চ-পঠিত অংশটি পড়ার ট্র্যাফিক বিতরণে সহায়তার জন্য প্রতিরূপ ব্যবহারের জোরালো পরামর্শ দেয়। আমি অন্য কোথাও পড়েছি যে 1:10 র‌্যাম-জিবি থেকে এইচডি-জিবি ধীর ডিস্কগুলির জন্য একটি ভাল নিয়ম thumb দ্রুত ডিস্ক জন্য থাম্ব এর।

আমি জানি যে আমরা মোঙ্গোকে এমনভাবে ব্যবহার করছি যেখানে ক্যাশে-সবকিছু সত্যিই উড়বে না, এই কারণেই আমি এমন একটি ব্যবস্থার ইঞ্জিনিয়ারিংয়ের উপায়গুলি খুঁজছি যা এই ধরনের ব্যবহারকে টিকিয়ে রাখতে পারে। সমগ্র ডেটা সেটটি সম্ভবত অর্ধেক এক বছরের মধ্যে একটি টিবি অধিকাংশ হতে হবে এবং ক্রমবর্ধমান রাখা হবে।


একটি কঠিন প্রশ্ন ভালভাবে জিজ্ঞাসা করা হয়েছে।
gWaldo

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

@ মিঃকুর্ট যখন আমি শাড়ী করা দরকার তখন আমি কীভাবে মাপ দেওয়ার চেষ্টা করব তার একটি অংশ হ'ল আমি আলাদা রেপ্লিকা নোডগুলি কীভাবে তৈরি করতে পারি। আমার অস্থায়ী বৈশিষ্টটিতে একটি পিসিআই-ভিত্তিক এসএসডি কার্ড জড়িত।
sysadmin1138

আহ, বুঝেছি আপনি শুরু থেকে শারডিং বিবেচনা করতে পারেন, আমরা একক সার্ভারটি প্রচুর পরিমাণে শ্যাডিং করি। এটি আপনাকে লেখার লকটি পেতে এবং কার্যকরভাবে আপনার মোট কোরগুলিতে লেখার স্কেল দেয়। এছাড়াও, পরবর্তী সময়ে সার্ভারগুলির মধ্যে চারিদিকে শার্ডগুলি সরানো সহজ।
মিঃকুর্ট

উত্তর:


5

এটি ছোট পয়েন্টগুলির একটি গুচ্ছ হতে চলেছে। তবে দুঃখজনকভাবে আপনার প্রশ্নের কোনও উত্তর নেই।

মঙ্গোডিবি ওএস কার্নেলটিকে মেমরি-পরিচালনা পরিচালনা করতে দেয়। সমস্যাটিতে যতটা সম্ভব র্যাম ফেলে দেওয়া ছাড়াও আপনার কার্যনির্বাহী সেট 'সক্রিয়ভাবে পরিচালনা' করার জন্য কয়েকটি জিনিস করা যেতে পারে।

আপনি যে বিষয়টি লেখার জন্য অনুকূল করতে পারেন তা হ'ল প্রথমে সেই রেকর্ডটির জন্য ক্যোয়ারী করা (একটি পঠন করুন), যাতে এটি স্মরণে কাজ করে। এটি প্রক্রিয়া-বিস্তৃত গ্লোবাল লকের সাথে সম্পর্কিত পারফরম্যান্স সমস্যাগুলি এড়াতে পারবেন (যা v2.2-তে প্রতি-ডিবি হওয়ার কথা)

র‌্যাম বনাম এসএসডি অনুপাতের জন্য কোনও কঠোর এবং দ্রুত নিয়ম নেই, তবে আমি মনে করি যে এসএসডিগুলির কাঁচা আইওপিএস আপনাকে অনেক কম অনুপাতের সাথে যেতে দেয়। আমার মাথার উপরে, 1: 3 সম্ভবত আপনি যেতে চান সবচেয়ে কম। তবে উচ্চতর ব্যয় এবং কম সাধ্যের কারণে আপনি সম্ভবত সেই অনুপাত কমিয়ে রাখবেন।

'রাইটিং বনাম পঠন পর্যায়ক্রমে' সম্পর্কিত, আমি কি সঠিকভাবে পড়ছি যে একবার রেকর্ড লেখার পরে তা খুব কমই আপডেট হয় ("উত্সাহিত")? যদি এটি হয় তবে দুটি ক্লাস্টার হোস্ট করা সার্থক হতে পারে; সাধারণ রাইটিং ক্লাস্টার এবং "বয়স্ক" ডেটার জন্য রিড-অপ্টিমাইজড ক্লাস্টার যা [এক্স সময়কাল] তে পরিবর্তন হয়নি । আমি অবশ্যই এই ক্লাস্টারে দাস-পঠন সক্ষম করব। (ব্যক্তিগতভাবে, আমি আপনার ডিবি'র অবজেক্ট ডকুমেন্টগুলিতে একটি তারিখ-সংশোধিত মান অন্তর্ভুক্ত করে এটি পরিচালনা করব))

প্রোডে যাওয়ার আগে আপনার যদি লোড-টেস্টের দক্ষতা থাকে তবে পারফেক্টটি এর মধ্যে থেকে নিরীক্ষণ করুন। মঙ্গোডিবি এই ধারণাটি দিয়ে লেখা হয়েছিল যে এটি প্রায়শই ভিএমগুলিতে মোতায়েন করা হবে (তাদের রেফারেন্স সিস্টেমগুলি ইসি 2 তে রয়েছে), সুতরাং ভিএমগুলিতে সংক্ষিপ্ত হতে ভয় পাবেন না।


প্রসেসিংয়ের সময় একটি প্রাথমিক ডকুমেন্ট স্টাব তৈরি করা হয় এবং এরপরে প্রক্রিয়াটির প্রথম অংশে বিভিন্ন উপ-স্তরের দ্বারা ক্রমাগত আপডেট করা হয়। আমরা যে পরিমাণ বাড়িয়ে দিচ্ছি তার পরিমাণ হ্রাস করতে প্রাথমিক ক্রয়ে কিছু হ্যান্ড-প্যাডিং করার সম্ভাবনাটি আমরা বিবেচনা করছি, তবে আমাদের বর্তমান লেখার লক শতাংশ আনন্দের সাথে কম।
sysadmin1138

র‌্যামে প্রবেশের জন্য কোনও রেকর্ড লেখার আগে এটি পড়ার পরামর্শটি ভাল পরামর্শ নয়। ২.০ (২০১১-এর মাঝামাঝি) থেকে ডেটা অ্যাক্সেস করার জন্য মংগাডিবি ফলন করেছে যে আপনি কেবলমাত্র অতিরিক্ত পড়া এবং সার্ভারে একটি অতিরিক্ত বৃত্তাকার ভ্রমণের কারণ হচ্ছেন না যদি আপনি এটি করেন যেহেতু লকটি না করায় যাইহোক এই সময়ের জন্য রাখা হবে না।
অস্যা কামস্কি

13

এটি এখানে পোস্ট করা অন্যান্য জবাবগুলির সংযোজন হিসাবে লক্ষ্য করা হচ্ছে, যা এখানে বিবেচনা করার জন্য অনেক প্রাসঙ্গিক উপাদান নিয়ে আলোচনা করে। তবে, এলোমেলো অ্যাক্সেস টাইপ সিস্টেমে দক্ষ র‌্যাম ব্যবহারের ক্ষেত্রে আরও একটি বিষয় রয়েছে যা প্রায়শই অবহেলিত হয় factor

আপনি রিডহেডের জন্য (লিনাক্সে) চলমান সেটিংস পরীক্ষা করে দেখতে পারেন blockdev --report(সাধারণত সুডো / রুট সুবিধার প্রয়োজন হয়)। এটি প্রতিটি ডিস্ক ডিভাইসের জন্য একটি সারি সহ একটি টেবিল মুদ্রণ করবে। আরএ কলামে রিডহেডের মান রয়েছে। এই মানটি 512 বাইট সেক্টরের সংখ্যা (সেক্টরের আকার ডিফল্ট না হলে - নোট করুন যে এই পোস্টটি লেখার সময় পর্যন্ত, এমনকি বড় আকারের ডিস্কগুলিও কার্নেলের দ্বারা 512 বাইট সেক্টর হিসাবে বিবেচনা করা হয়) যা প্রতিটিটিতে পড়ে ডিস্ক অ্যাক্সেস।

আপনি কোনও চালিত ডিস্ক ডিভাইসের জন্য রিডহেড সেটিংসটি চালিয়ে সেট করতে পারেন:

blockdev --setra <value> <device name>

সফ্টওয়্যার ভিত্তিক RAID সিস্টেম ব্যবহার করার সময় প্রতিটি ডিস্ক ডিভাইসের পাশাপাশি RAID কন্ট্রোলারের সাথে সম্পর্কিত ডিভাইসে রিডহেড সেট করা নিশ্চিত করে নিন।

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

মঙ্গোডিবির মতো সিস্টেমে যেখানে আপনার অ্যাক্সেসটি সাধারণত কোনও ডেটা সেট জুড়ে এলোমেলো অ্যাক্সেস হতে চলেছে এটি কেবল অন্যত্র ব্যবহার করা মেমরির অপচয় হয় better মঙ্গোডিবি-র জন্য মেমোরি পরিচালনা করার মতো সিস্টেমটি অন্যদিকে যেমন অনুরোধ করা হয় তখন পাঠকদের জন্য মেমরির একটি অংশ বরাদ্দ করতে চলেছে এবং ফলস্বরূপ কার্যকরভাবে ব্যবহারের জন্য মঙ্গোডিবির জন্য কম র‌্যাম ছাড়বে।

সঠিক পাঠ্যপুস্তকের আকার বাছাই করা জটিল এবং এটি আপনার হার্ডওয়্যার, কনফিগারেশন, ব্লক আকার, স্ট্রাইপ আকার এবং ডেটা নিজেই উপর নির্ভর করে। উদাহরণস্বরূপ আপনি যদি এসএসডিগুলিতে যান তবে আপনি একটি স্বল্প সেটিং চাইবেন, তবে কীভাবে নিম্নের উপর নির্ভর করবে ডেটা।

ব্যাখ্যা করার জন্য: আপনি নিশ্চিত করতে চান যে একটি সম্পূর্ণ একক ডকুমেন্টে রিডহেড যথেষ্ট পরিমাণে টানতে পারে এবং ডিস্কে ফিরে যেতে হবে না। আসুন আপনার 8k আকারের মাঝারি আকারটি ধরুন - যেহেতু ডিস্কের সেক্টরগুলি সাধারণত 512 বাইট হয় তাই পুরো ডকুমেন্টে পড়ার জন্য 16 ডিস্ক অ্যাক্সেস নিতে হবে কোনও রিডহেড ছাড়াই। আপনার যদি 16 টি সেক্টর বা তার বেশি রিডহেড থাকে তবে আপনি কেবলমাত্র একটি ডিস্কে ট্রিপ সহ পুরো ডকুমেন্টে পড়তেন।

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


1
আমরা ঘরে কিছু হার্ডওয়্যার পাওয়ার পরে মূল্যবান তথ্য অবশ্যই কার্যকর হবে। ধন্যবাদ!
sysadmin1138

3

শেষ-ব্যবহারকারীর প্রশ্নের জন্য আপনার প্রতিরূপ ব্যবহার এবং অন্য মেশিনে আপনার কর্মপ্রবাহটি করা বিবেচনা করা উচিত।

আপনার থাম্বটি 1:10 ব্যবহার করে, আপনি 1TB ডিস্ক স্টোরেজটির জন্য প্রায় 128GB র্যামের দিকে তাকাচ্ছেন; কিছু সাশ্রয়ী মূল্যের এসএসডি যদি আজ> 60 কে আইওপিএসে পৌঁছানোর দাবি করে, তবে সত্যিকারের বিশ্বের সংখ্যাগুলি কিছুটা আলাদা হতে পারে, পাশাপাশি আপনি যদি আপনার এসএসডি ব্যবহার করে র‌্যাড ব্যবহার করছেন কিনা এবং আপনি যদি হন তবে র‌্যাড কার্ডও অত্যন্ত গুরুত্বপূর্ণ is ।

এই পোস্টের সময়ে, ডিডিআর 3 ইসিসি র‌্যামের 128 গিগাবাইট থেকে 256 গিগাবাইটে যাওয়া 1 ইউ ইন্টেল সার্ভারে প্রায় 2000 ডলার অতিরিক্ত বলে মনে হচ্ছে এবং এটি আপনাকে 1 টিবি ডেটা সহ 1: 5 অনুপাত দেবে যা আমি মনে করি যে এটি একটি হবে আরও ভাল অনুপাত। আপনার যদি প্রয়োজন হয় আপনার কাজের চাপ যত দ্রুত সম্ভব সমাপ্ত হয়, আরও র‌্যাম অবশ্যই স্পষ্টভাবে সহায়তা করবে, তবে আসলেই কি তা জরুরি?

আপনার কিছু ফাইল সিস্টেম টিউনিংও করতে হবে, যেমন এক্সট 4 এ "ন্যাটিয়েম, ডেটা = রাইটব্যাক, নোবারিয়ার" এর মতো কিছু, এবং আপনার বাইরে থাকা পারফরম্যান্সের বাইরে বেরোনোর ​​জন্য আপনাকে কিছু কার্নেল সেটিংসের টুইটগুলি করতে হবে well পদ্ধতি.

আপনি যদি RAID এর সাথে যাচ্ছেন তবে RAID-10 বেশ ভাল পছন্দ হবে, এবং যথাযথ RAID কন্ট্রোলারের সাথে বেশ কার্যকর পারফরম্যান্স দেওয়া হবে তবে আপনার উপলব্ধ স্থানটি অর্ধেক করে দেবে। আপনি যদি আপনার উপলব্ধ স্থানটি অর্ধেক না করে কোনও শালীন পারফরম্যান্স বস্ট করতে চান তবে আপনি RAID50 এও দেখতে পারেন। একটি RAID চালানোর ঝুঁকি হ'ল আপনার ড্রাইভে ট্রিমের আর অ্যাক্সেস নেই, যার অর্থ এখন থেকে বারবার আপনার ডেটা সরিয়ে নেওয়া, RAID বিচ্ছিন্ন করা, ড্রাইভগুলি ট্রিম করা এবং RAID পুনরায় তৈরি করা দরকার।

শেষ পর্যন্ত, আপনি কতটা জটিলতা চান, কত টাকা ব্যয় করতে চান এবং কত দ্রুত আপনি আপনার কাজের চাপ প্রক্রিয়াজাত করতে চান তা সিদ্ধান্ত নিতে হবে। মঙ্গোডিবি ব্যবহারের জন্য আদর্শ ডাটাবেস কিনা তাও আমি মূল্যায়ন করব, আপনি এখনও ততক্ষণে ব্যবহারকারীদের প্রশ্নের জন্য দ্রুত উত্তর দিতে পারেন তবে আপনার ডেটা প্রক্রিয়া করার জন্য অন্য কিছু ব্যবহার করতে পারেন যা কয়েক সেকেন্ডের মধ্যে প্রস্তুত হওয়ার দরকার নেই doesn't , এবং এটি আপনাকে আরও স্বাচ্ছন্দ্য সহ একাধিক মেশিনে আপনার কাজের চাপ ছড়িয়ে দেওয়ার অনুমতি দিতে পারে।

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