কম্পিউটার

কিভাবে আপনার ডাটাবেস কর্মক্ষমতা নিরীক্ষণ এবং অপ্টিমাইজ করবেন:একটি ব্যবহারিক গাইড

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

এই পোস্টে, আপনি কীভাবে আপনার ডাটাবেস কর্মক্ষমতা নিরীক্ষণ এবং অপ্টিমাইজ করতে পারেন তা দেখাতে আমরা আপনার আর্কিটেকচারের ডাটাবেস অংশে ডুব দেব। আপনার স্ট্যাক নির্বিশেষে, অথবা আপনি PostgreSQL, MongoDB, বা অন্য কোনো ডাটাবেসের জন্য কর্মক্ষমতা নিরীক্ষণ এবং অপ্টিমাইজ করতে চান কিনা, নিম্নলিখিত নীতিগুলির বেশিরভাগই প্রযোজ্য৷

কেন ডাটাবেস কর্মক্ষমতা নিরীক্ষণ?

ধরা যাক একটি ক্যোয়ারী খুব ধীরগতির, এবং আপনার অ্যাপটিকে ফলাফলের জন্য অপেক্ষা করতে হবে - যার ফলে আপনার শেষ-ব্যবহারকারী এবং/অথবা আপনার অ্যাপের একটি অংশের জন্য জিনিসগুলি বন্ধ হয়ে যায়৷

ট্রাফিক জ্যামের মতো, একটি অংশ অন্য কোথাও ঘটতে থাকা কিছুর প্রভাব হিসাবে স্থির হয়ে দাঁড়িয়ে থাকতে পারে। যদি অনেকগুলি প্রশ্নের সমাধান করতে খুব বেশি সময় লাগে, তাহলে অন্য প্রশ্নগুলি বাধাগ্রস্ত হওয়ার কারণে এটি হতে পারে৷

আপনার লক্ষ্য হল আপনার অ্যাপের অন্যান্য অংশে কিছু ভুল হওয়ার আগে কোন সমস্যা কোথা থেকে আসছে তা খুঁজে বের করা।

পরবর্তী ধাপ হল আপনার আর্কিটেকচার অপ্টিমাইজ করতে এবং আপনি কীভাবে জিনিসগুলিকে দ্রুততর করতে পারেন তা দেখতে সক্রিয়ভাবে পর্যবেক্ষণ ব্যবহার করা। কিন্তু আমরা নিজেদের থেকে এগিয়ে যাচ্ছি - আসুন ধাপ 1 দিয়ে শুরু করি:

ধাপ 1:AKA ইনস্ট্রুমেন্টিং ডেটাবেস পারফরম্যান্স পরিমাপ করা

ডাটাবেস মনিটরিং আপনি সঠিক জিনিসগুলি পরিমাপ করেছেন তা নিশ্চিত করার মাধ্যমে শুরু হয়:

  • ত্রুটি

  • কর্মক্ষমতা

  • উপায় এবং প্রশ্নের 90 তম পার্সেন্টাইল সময়কাল

  • মোট থ্রুপুট - যখন থ্রুপুট একটি সমস্যা হয় তখন আপনাকে ট্রিগার/পতাকা সেট করার অন্য উপায় দেয়

সৌভাগ্যবশত, সেই ডেটা পাওয়া ইতিমধ্যেই আপনার জন্য করা হয়েছে:আপনার APMsoftware সম্ভবত আপনি কি উপকরণ এবং পরিমাপ করতে চান তা কনফিগার করতে দেয়। আপনি অ্যাপসিগন্যাল ব্যবহার করলে, ডেটা সংগ্রহ এবং একত্রিত করা স্বয়ংক্রিয়ভাবে ঘটে, অনেক সেটআপ ছাড়াই। আমরা আপনার জন্য ভারী উত্তোলন করেছি!

ধাপ 2:একটি স্টার্টিং পয়েন্ট - উচ্চ-প্রভাবিত প্রশ্নগুলি খুঁজুন

একবার আপনি আপনার অ্যাপের ইন্সট্রুমেন্টেড হয়ে গেলে এবং বাস্তব-বিশ্বের ডেটা আসতে শুরু করলে, আপনি নিদর্শনগুলি আবির্ভূত দেখতে পাবেন। AppSignal-এ, আমরা নেভিগেশনে 'উন্নত'-এর অধীনে সবচেয়ে ধীর API অনুরোধ এবং ধীরগতির প্রশ্নের জন্য স্ক্রিন তৈরি করেছি:

এই পর্দা আপনাকে অপ্টিমাইজেশনের জন্য একটি দুর্দান্ত সূচনা পয়েন্ট দেবে। বাই-ডিফল্ট, ধীরগতির প্রশ্নগুলি প্রভাব অনুসারে সাজানো হয়। এগুলি এমন প্রশ্ন যা আপনি প্রায়শই করেন৷ প্রভাব হল থ্রুপুট x গড় ক্যোয়ারী সময়।

এই বাছাইগুলির মধ্যে টগল করা আপনাকে সবচেয়ে বেশি ভলিউম সহ প্রশ্নগুলির একটি ধারণা দেবে, যেগুলি সবচেয়ে ধীর (কিন্তু সম্ভবত এক রাতের ব্যাকগ্রাউন্ডের কাজ যা আপনি সহজেই উপেক্ষা করতে পারেন) এবং যেগুলি সবচেয়ে বেশি প্রভাব ফেলে৷

একটি দ্রুত পার্শ্ব-পদক্ষেপ:কিছু ব্যক্তিগত প্রশ্ন ঠিক করুন

এখন আপনি ফিক্সিং এ ডুব দেওয়ার জন্য কিছু প্রশ্ন খুঁজে পেতে পারেন।

আপনি যদি একটি ধীরগতির ক্যোয়ারীতে ক্লিক করেন, তাহলে আপনি তার সমস্ত বিবরণ ডানদিকে দেখতে পাবেন, কোয়েরির থ্রুপুট এবং প্রতিক্রিয়ার সময় থেকে শুরু করে ক্যোয়ারী নাম পর্যন্ত:

একটি শিখরে প্রতিক্রিয়া সময়ের উপর হোভার করুন, এবং তারপর আপনি 'এখানে কি ঘটেছে' বিকল্পে ক্লিক করে জুম বাড়াতে পারেন। আপনি সেই সময়ে, সেই নমুনায় কী ত্রুটি ঘটেছে এবং হোস্টে কী ঘটেছে তা দেখতে পাবেন৷

আমরা এটিকে একটি নির্দিষ্ট অ্যান্টি-প্যাটার্নের জন্য খুব দৃশ্যমান করেছি:N+1। N+1 এন্টি-প্যাটার্নটি ঘটে যখন পূর্ববর্তী প্রশ্নের প্রতিটি ফলাফলের জন্য একটি ক্যোয়ারী কার্যকর করা হয়।

ক্যোয়ারী সংখ্যা হল N + 1, N হল প্রাথমিক ক্যোয়ারী ফলাফলের জন্য প্রশ্নের সংখ্যা। যদি সেই প্রাথমিক ক্যোয়ারীটির একটি ফলাফল থাকে, N+1 =2। Ifit-এর 1,000টি ফলাফল আছে, N+1 =1,001টি প্রশ্ন। বুম।

যদি প্রশ্নগুলি N+1 বিরোধী প্যাটার্ন অনুসরণ করে, তবে এটি একটি সুখী দুর্ঘটনা - সেগুলি এখানে লেবেল করা হয়েছে যাতে আপনি দ্রুত তাদের খুঁজে পেতে পারেন:

আমরা এখানে সেগুলি কীভাবে সমাধান করব তা নিয়ে যাব না - আমরা N+1 প্রশ্নগুলিতে একটি পৃথক ব্লগ পোস্ট লিখেছি৷

ঠিক আছে, এখন ধরা যাক আমরা কিছু উন্মাদ জিনিস ঠিক করেছি, এবং আমরা সেগুলি ঠিক করেছি, আমরা লক্ষ্য করেছি কখন সেগুলি ঘটেছে এবং সবচেয়ে খারাপ প্রতিক্রিয়ার সময়৷

ধাপ 3:খুঁজে নেওয়া প্যাটার্নের উপর সিদ্ধান্ত নেওয়া - কি ভুল?

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

চলুন গড়ে আপনার প্রশ্নের থ্রুপুট এবং সময়কাল দেখি৷ আপনি এটি আপনার APM সফ্টওয়্যারে সেট আপ করতে সক্ষম হবেন৷ আপনি যদি Node.js নিরীক্ষণ করতে এবং PostgreSQL আপনার ডাটাবেস হিসাবে ব্যবহার করতে অ্যাপসিগন্যাল ব্যবহার করেন, তাহলে আপনার জন্য সবচেয়ে গুরুত্বপূর্ণ মেট্রিক্স সহ আমরা স্বয়ংক্রিয়ভাবে ড্যাশবোর্ড তৈরি করি৷

নোড-পোস্টগ্রেস ড্যাশবোর্ড এই মত ডেটা দেখাবে:

আপনি যদি আপনার অ্যাপের জন্য এটি সেট আপ করতে চান তবে এখানে আরও কিছু পড়া আছে৷

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

আমাদের সবচেয়ে ধীরগতির ক্যোয়ারী স্ক্রীন দেখার অভিজ্ঞতা থেকে, আমরা এখন মূল অপরাধীদের সম্পর্কে ধারণা পেয়েছি এবং কখন তারা শীর্ষে পৌঁছেছে।

থ্রুপুটে কিছু সংক্ষিপ্ত শিখর ঠিক হতে পারে - হোস্ট অন্য প্রসেসগুলিকে বাদ দিতে পারে যা একটি কোয়েরি ধীর করে তোলে, উদাহরণস্বরূপ৷

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

ধাপ 4:কি রাখতে হবে রাতে উঠবেন?

আমরা সাধারণত স্পেকট্রামের কোলাহলপূর্ণ দিক থেকে শুরু করার পরামর্শ দিই:PagerDuty এর পরিবর্তে এমন একটি চ্যানেলে আপনাকে সতর্ক করার জন্য কিছু ট্রিগার যা আপনাকে জাগিয়ে তোলে না, যেমন ইমেল বা স্ল্যাক।

"event_duration" মেট্রিকে একটি কাস্টম মেট্রিক্স ট্রিগার তৈরি করুন এবং আপনার অ্যাপে গড় ক্যোয়ারী সময়ের একটি সতর্কতা পেতে গড় ক্ষেত্রটি নির্বাচন করুন৷ আপনার অ্যাপের মুখোমুখি হওয়া সবচেয়ে ধীরগতির প্রশ্নগুলির বিষয়ে সতর্কতা পেতে 90 তম বা 95 তম পার্সেন্টাইল নির্বাচন করুন৷

তারপর "গ্রুপ" এবং "নেমস্পেস" ট্যাগগুলি কনফিগার করুন যে ধরনের ইভেন্ট সম্পর্কে আপনি সতর্ক করতে চান এবং কোন নামস্থানে। যেমন, "active_record" (Rails) বা "postgres" (Node.js) বা গ্রুপের জন্য "ecto" (Elixir), এবং নামস্থানের জন্য "web" বা "background":

এক সপ্তাহ পরে, আপনি কিছু প্যাটার্ন দেখতে শুরু করবেন এবং কোন ক্ষেত্রে আপনার মনোযোগ প্রয়োজন এবং কোন কেসগুলি সাধারণত নিজেরাই সমাধান করতে পারে সে সম্পর্কে একটি ধারণা পাবেন৷

তারপরে আপনি ট্রিগারগুলিকে কম শোরগোল করার জন্য সামঞ্জস্য করতে পারেন এবং আপনি যখন নির্দিষ্ট সতর্কতার মাধ্যমে ঘুম থেকে উঠতে চান তখন চ্যানেল যোগ করতে পারেন৷

ধাপ 5:ডাটাবেস মনিটরিং সেট আপ করা হয়েছে

এখন, তাত্ত্বিকভাবে, আমাদের একটি সুন্দর মনিটরিং সেটআপ থাকা উচিত:সঠিক ডেটা আসে, আমরা বিটগুলি ফ্যানে আঘাত করার আগে আমাদের সতর্ক করার জন্য ট্রিগার সেট করেছি, এবং আমরা কিছু বড় অপরাধী খুঁজে পেয়েছি। আমাদের করা উচিত, তাই না?

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

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

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

AppSignal ব্যবহার করে দেখুন, Stroopwafels পান 🍪

স্ট্রোপওয়াফেলের কথা বললে, আমরা তাদের সারা বিশ্বে পাঠাই। Ruby, Elixir এবং Node.js-এর জন্য আমাদেরAppSignal APM সফ্টওয়্যার ব্যবহার করে দেখুন। আপনি যদি একটি বিনামূল্যের ট্রায়াল সেট আপ করেন এবং আমাদের সাথে যোগাযোগ করেন, তাহলে আমরা আপনাকে বাড়িতে স্ট্রোপওয়াফেলের একটি বাক্স পাঠাব৷


  1. Windows 10

  2. কিভাবে আপনার Windows 10 PC-এর কর্মক্ষমতা নিরীক্ষণ করবেন - দুটি পন্থা

  3. আরো ভালো পারফরম্যান্সের জন্য কীভাবে আপনার ম্যাক অপ্টিমাইজ করবেন?

  4. কিভাবে আপনার পিসিতে পারফরম্যান্স এবং সিকিউরিটি স্ক্যান পরিচালনা করবেন?