মঙ্গোডিবিতে খুব বেশি সংখ্যক সন্নিবেশকৃত হলে কি হবে? কীভাবে সব তথ্য সঞ্চিত আছে তা নিশ্চিত করবেন?


24

আমি পর্যায়ক্রমে পরিমাপ করা মান সংরক্ষণ করতে মঙ্গোডিবি ব্যবহার করি। প্রতি 100 ডলার এমএসে একগুচ্ছ মানগুলি ডকুমেন্ট হিসাবে .োকানো হয়। এটি দুর্দান্ত কাজ করে তবে আমি পারফরম্যান্স সম্পর্কিত সমস্যা নিয়ে চিন্তিত। (আমি নিরাপদ সন্নিবেশ ব্যবহার করি, মনে হয় পাইমঙ্গোতে এটি ডিফল্ট)

মঙ্গোড হার্ড ডিস্কে সংরক্ষণ করতে সক্ষম হওয়ার চেয়ে প্রতি সেকেন্ডে আরও বেশি সন্নিবেশকারী থাকলে কী হবে? কোনও সতর্কতা আসবে নাকি তা নিঃশব্দে ব্যর্থ হবে?

লেখার বোঝা নিরীক্ষণের জন্য কি কোনও পদ্ধতি আছে? আমি কেবল এটি পেয়েছি db.serverStatus().writeBacksQueuedযা আমি যখন কল করি তখন সর্বদা মিথ্যাতে সেট থাকে। লেখার সারি পূরণ করার জন্য আমার কতটা ডেটা sertোকাতে হবে তা আমি কীভাবে পরীক্ষা করতে পারি?

mongostatলকগুলি প্রদর্শন করে। এই যে আমার সম্পর্কে উদ্বিগ্ন হওয়া উচিত?

insert  query update delete getmore command flushes mapped  vsize    res faults  locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn repl       time 
  *117     *0     *0     *0       0     2|0       0  17.4g  35.3g  3.76g      0     .:6.5%          0       0|0     0|0   124b     6k     2  SLV   09:58:10 
  *111     *0     *0     *0       0     2|0       0  17.4g  35.3g  3.76g      0     .:0.8%          0       0|0     0|0   124b     6k     2  SLV   09:58:11 
  *111     *0     *0     *0       0     2|0       0  17.4g  35.3g  3.76g      0     .:4.2%          0       0|0     0|0   124b     6k     2  SLV   09:58:1

আমার কি লক লেখার বিষয়ে চিন্তা করতে হবে? লেখার লকড সময়কালীন একটি সন্নিবেশের সাথে কী ঘটে? এটি কি সারিবদ্ধ এবং পরে সংরক্ষণ করা হয়?

আমি একজন মাস্টার এবং একটি ক্রীতদাস ব্যবহার করে একটি সাধারণ প্রতিলিপি সেটআপ সম্পর্কে ভাবছি। প্রাথমিক সিঙ্ক বা একটি রিসাইক প্রক্রিয়া ডেটাবেসগুলিকে লক করে দেয়?

(আমি ২.৪.৩ সংস্করণ ব্যবহার করছি)

আপডেট: আমি মনে করি আংশিকভাবে আমার নিজের প্রশ্নের উত্তর দিয়েছি। আমি একটি ছোট পরীক্ষার ডকুমেন্টটি প্রবেশের সময় লুপটি ব্যবহার করে সেকেন্ডে 12.000 পর্যন্ত সেকেন্ডে পেতে সক্ষম হয়েছি। তবে কিউআর | কিউডব্লিউ এখনও দেখায় যে এখানে পড়ার- এবং লেখার সারিটি খালি রয়েছে:

insert  query update delete getmore command flushes mapped  vsize    res faults       locked db idx miss %     qr|qw   ar|aw  netIn netOut  conn repl       time 
 11234     *0      2     *0    1563     1|0       1  21.9g  44.3g  1.22g      0    testdb:58.9%          0       1|0     1|1   797k   980k     6  PRI   10:26:32 
 12768     *0      2     *0    1284     1|0       0  21.9g  44.3g  1.22g      0    testdb:58.0%          0       0|0     0|1   881k     1m     6  PRI   10:26:33 
 12839     *0      2     *0    1231     1|0       0  21.9g  44.3g  1.22g      0    testdb:60.3%          0       0|0     0|1   883k     1m     6  PRI   10:26:34 
 12701     *0      2     *0     910     1|0       0  21.9g  44.3g  1.22g      0    testdb:61.8%          0       0|0     0|1   858k     1m     6  PRI   10:26:35 
 12241     *0      2     *0    1206     1|0       0  21.9g  44.3g  1.22g      0    testdb:56.7%          0       0|0     0|0   843k     1m     6  PRI   10:26:36 
 11581     *0      2     *0    1406     1|0       0  21.9g  44.3g  1.22g      0    testdb:61.8%          0       0|0     0|1   811k     1m     6  PRI   10:26:37 
  8719     *0      2     *0    1210     1|0       0  21.9g  44.3g  1.22g      0    testdb:43.8%          0       0|0     0|1   618k   762k     6  PRI   10:26:38 
 11429     *0      2     *0    1469     1|0       0  21.9g  44.3g  1.22g      0    testdb:60.6%          0       0|0     0|1   804k   993k     6  PRI   10:26:39 
 12779     *0      2     *0    1092     1|0       0  21.9g  44.3g  1.22g      0    testdb:60.2%          0       1|0     0|1   872k     1m     6  PRI   10:26:40 
 12757     *0      2     *0     436     1|0       0  21.9g  44.3g  1.22g      0    testdb:59.7%          0       0|0     0|1   838k   432k     6  PRI   10:26:41 

আমি মনে করি এর অর্থ এই যে একা সন্নিবেশ করানো অনেক সমস্যার কারণ হবে না: "কুইউজগুলি স্পাইকের দিকে ঝুঁকবে যদি আপনি অন্য লেখার ভারী ওপরের পাশাপাশি প্রচুর রাইটিং অপারেশন যেমন বড় পরিসীমা অপসারণের কাজ করে থাকেন।" ( এখানে পাওয়া ]

আমার উন্মুক্ত প্রশ্ন: দীর্ঘমেয়াদে লেখার সারিটি বাড়লে আমার ডেটা কী হবে?

উত্তর:


25

আপনি এখানে নিজের কয়েকটি প্রশ্নের উত্তর দিয়েছেন, বিশেষত আপনার সমীকরণটির রাইটিং লক দিক সম্পর্কে একটি শালীন ধারণা রয়েছে - 12,000 সন্নিবেশ / সেকেন্ড আপনাকে 60% ডলার লেখার তালিকায় নিয়ে আসে। এটি সামঞ্জস্যপূর্ণ পারফরম্যান্স পাওয়ার জন্য একটি যুক্তিসঙ্গত স্তর - আপনি কিছুটা বিতর্ক পেতে চলেছেন এবং কিছু অপস কিছুটা ধীর গতিতে হবে তবে আপনি 80% এর চেয়ে বেশি উদ্বেগ শুরু করতে চান - অনেকগুলি জিনিস যেমন আপনি যখন 80% এর বেশি পাওয়া শুরু করেন ক্ষমতা আপনি অনেক বেশি বার সমস্যাগুলি আঘাত করা শুরু করবেন।

অন্যান্য বাধাগুলির ক্ষেত্রে এবং বিশেষত আপনি ডিস্কে কত দ্রুত লিখতে পারেন - এর ফলে সমস্যা হতে পারে তবে সময়ের সাথে সম্পর্কিত পরিসংখ্যানগুলি দেখার জন্য আমি আপনাকে হার্ডওয়্যার এবং আইও স্ট্যাটাস দেওয়ার জন্য মুনিন-নোড প্লাগইনের সাথে এমএমএস ইনস্টল করার পরামর্শ দেব would মঙ্গোডিবি পরিসংখ্যান ছাড়াও।

আপনার যখন তা থাকে, আপনি যে মেট্রিকগুলিতে নজর রাখতে চান তা হ'ল:

  • গড় ফ্লাশ সময় (ডিস্কে মঙ্গোডিবির পর্যায়ক্রমিক সিঙ্কটি এই কত সময় নেয়)
  • হার্ডওয়্যার ট্যাবে আইওএসট্যাটস (বিশেষত আইওউইট)
  • পৃষ্ঠা ত্রুটি (যদি আপনার ডিস্ক লেখায় ব্যস্ত থাকে এবং আপনাকে ডেটা পড়তে হবে তবে সেগুলি খুব কম সংস্থান করার জন্য প্রতিযোগিতা করতে চলেছে)

এটি তখন কিছুটা জটিল, তবে এখানে একটি প্রাথমিক ধারণা:

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

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

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

আপনার পূর্ববর্তী কিছু প্রশ্নের পরে আপনার কয়েকটি প্রশ্নের উত্তর:

মঙ্গোড হার্ড ডিস্কে সংরক্ষণ করতে সক্ষম হওয়ার চেয়ে প্রতি সেকেন্ডে আরও বেশি সন্নিবেশকারী থাকলে কী হবে? কোনও সতর্কতা আসবে নাকি তা নিঃশব্দে ব্যর্থ হবে?

যদি আপনি উপরে বর্ণিত স্তরে ডিস্ককে চাপ দেওয়া শুরু করেন, অবশেষে সবকিছু ধীরে ধীরে চলতে চলেছে এবং কিছু সময়ে (এবং এটি সময়ের বাইরেও নির্ভর করবে, আপনার হার্ডওয়্যারকে কীভাবে সুন্দর করা হবে, আপনি কীভাবে ব্যতিক্রমগুলি পরিচালনা করবেন) আপনার লেখাগুলি ব্যর্থ হবে - যদি আপনি পিমোঙ্গোর একটি সাম্প্রতিক সংস্করণ ব্যবহার করছেন তবে আপনি ডিফল্টরূপে নিরাপদ লেখাগুলি ব্যবহার করবেন এবং সেগুলি ব্যর্থ হয়ে যাবে। আপনি যদি আরও বেশি ভৌতিক হয়ে উঠতে চান তবে আপনি মাঝে মাঝে j এর লেখার জন্য উদ্বেগ করতে পারেন : সত্য যা লিখিত জার্নালে (যেমন ডিস্কে) না তৈরি হওয়া পর্যন্ত ঠিক ফিরে আসার অপেক্ষায় থাকবে। এটি অবশ্যই একটি সাধারণ নিরাপদ লেখার চেয়ে ধীর হবে তবে এটি ডিস্ক ক্ষমতা সম্পর্কিত সমস্যাগুলির তাত্ক্ষণিক ইঙ্গিত হবে এবং আপনি এটি অন্য ক্রিয়াকলাপকে অবরোধ / সারি করার জন্য ব্যবহার করতে পারেন এবং আপনার ডাটাবেসকে রোধ করতে প্রয়োজনীয়ভাবে একটি থ্রোটল হিসাবে কাজ করতে পারেন ডুবিয়ে দিলাম।

আমি একজন মাস্টার এবং একটি ক্রীতদাস ব্যবহার করে একটি সাধারণ প্রতিলিপি সেটআপ সম্পর্কে ভাবছি। প্রাথমিক সিঙ্ক বা একটি রিসাইক প্রক্রিয়া ডেটাবেসগুলিকে লক করে দেয়?

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

দীর্ঘমেয়াদে লেখার সারি বাড়লে আমার ডেটা কী হবে?

আপনি সম্ভবত উপরের ব্যাখ্যা থেকে বলতে পারেন যে, আপনি কীভাবে আপনার আবেদন লিখবেন, আপনি কীভাবে আপনার লেখার স্বীকৃতি দিতে বেছে নিয়েছেন এবং আপনার কতটা ক্ষমতা রয়েছে তার উপরে উত্তরটি অনেকটাই নির্ভরশীল। মোঙ্গোডিবি-তে ডিস্কে লেখার ক্ষেত্রে আপনি যেমনটি চান তেমন সুরক্ষিত থাকতে পারেন, তবে j:trueউপরোক্ত আলোচনার সাথে উল্লেখ করে একটি পারফরম্যান্স ট্রেড বন্ধ রয়েছে off

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

একটি শেষ জিনিস, db.serverStatus().writeBacksQueuedআসলে একটি মেট্রিক যা কেবল কখনও তীক্ষ্ণ পরিবেশে অ-শূন্য হতে পারে, এবং এটি নিশ্চিতকরণের সাথে কাজ করে যাবেন যে মাইগ্রেশন চলাকালীন কোনও অংশকে লিখতে হবে যথাযথভাবে মোকাবেলা করা ( রাইটব্যাক শ্রোতা দ্বারা পরিচালিত )। অতএব এটি মূলত এখানে একটি লাল উত্তেজনা - সাধারণ লেখার পরিমাণের সাথে কিছুই করার থাকে না।

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