কম্পিউটার টিউটোরিয়াল

সাইডকিউ পারফরম্যান্স সর্বোচ্চ করা: এক্সপার্ট অপ্টিমাইজেশন ও মনিটরিং গাইড

আমরা সাইডকিউ অপ্টিমাইজ বা মনিটর করার বিষয়ে প্রায়শই প্রশ্ন পাই। মনিটরিং আমাদের গেম, কিন্তু সাইডকিউর পারফরম্যান্স অপ্টিমাইজ করা সম্পূর্ণ আলাদা একটি বল গেম। বাস্তবে, অপ্টিমাইজ করা জটিল, কিন্তু আসুন দাঁড় করি সিম্পল見える جوابগুলোতে...

স্পিড বাড়ানোর দুটি পথ

শুরুতে, স্পিড دوভাবে বাড়ানো যায়—বড় জবগুলো করে (যে বেশি মেমরি বা IO নিতে পারে বা বেশি কমপ্লেক্স হতে পারে), অথবা কনকারেন্সি সেটিং বা ওয়ার্কার অjusted করে (যে বেশি CPU এবং সম্ভবত IO ব্যবহার করবে)। আউচ, বাস্তবতা ইতিমধ্যে দাঁড় করিয়েছে: স্পিডের দাম চুকাতে হয়। আপনি যদি অতিরিক্ত মেমরি, IO বা CPU স্পেয়ার করতে পারেন তবে এটি ফ্রি, কিন্তু আমরা মনে করি ট্রেড-অফগুলো বুঝতে গুরুত্বপূর্ণ যেগুলো করতে হতে পারে।

কনকারেন্সি সেটিং দিয়ে স্পিড বাড়ানো

সাইডকিউ মাল্টিপল থ্রেড ব্যবহার করে কনকারেন্সি হ্যান্ডেল করে তার প্রসেসে। এইভাবে, এটি একসাথে একাধিক জব প্রসেস করতে পারে, প্রতিটি থ্রেড একবারে একটি জব প্রসেস করে। ডিফল্টভাবে, সাইডকিউ প্রতি প্রসেস ১০ থ্রেড ব্যবহার করে। আপনি এটি কনফিগার করতে পারেন আরও থ্রেড ব্যবহার করতে, যাতে কনকারেন্সি বেড়ে যায়।

নোট করুন যে নতুন কনকারেন্সি মডেল আপনার অ্যাপ দ্বারা সমর্থিত হতে হবে। উদাহরণস্বরূপ, এটিকে ডাটাবেসের সাথে যথেষ্ট বড় কানেকশন পুল প্রয়োজন এবং আপনার হোস্টটি I/O অপারেশন বৃদ্ধি হ্যান্ডেল করতে সক্ষম হতে হবে। আরও জানতে সাইডকিউ ডকুমেন্টেশনের কনকারেন্সি সেকশন দেখুন।

একাধিক ওয়ার্কার চালায় স্পিড বাড়ানো

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

এটি কাজ করে কি ভাঙে কি? কী মনিটর করব এবং আমাদের ম্যাজিক ড্যাশবোর্ড

ডিফল্ট প্যারামিটার চেঞ্জ করলে আপনার অ্যাপ্লিকেশনের পারফরম্যান্সে প্রভাব ফেলতে পারে। সেটিংস চেঞ্জ করার আগে, মনিটরিং সেট আপ করা রিকমেন্ডেড যাতে দেখা যায় পরিবর্তনগুলো পজিটিভ ইম্প্যাক্ট দিচ্ছে কিনা অথবা পারফরম্যান্স ডিগ্রেড করছে। শুরু করি হোস্ট লেভেলে কি কিছু ভাঙছে কিনা চেক করি। আপনি দেখতে চাবেন আপনার অ্যাপ হার্ডওয়ারে কত রিসোর্স ইনটেনসিভ। আপনার মেমরি এবং CPU-এ ক্যাপাসিটি থাকলে, আপনি কনকারেন্সি সেটিংস বাড়িয়ে কিছুটা ফাস্ট করতে পারেন। আপনি যেকোনো APM (Application Performance Monitoring) ব্যবহার করুন, সেটিতে সম্ভবত হোস্ট মেট্রিক্স ট্র্যাক করার পদ্ধতি আছে। আপনি যদি AppSignal ব্যবহার করেন, হোস্টের জন্য ড্যাশবোর্ড অটোমেটিক্যালি তৈরি হয়। নিশ্চিত করতে যে আপনি অ্যালার্ট পান জিনিসপত্র বড় হয়ার আগে, আপনি সহজে CPU ইউজেজের জন্য অ্যালার্ট সেট আপ করতে পারেন নির্দিষ্ট হোস্টের জন্য Anomaly detection ব্যবহার করে। এখন, দেখি সাইডকিউ লেভেলে কি কিছু ভাঙছে কিনা। আপনার পছন্দের APM সম্ভবত আপনাকে ব্যাকগ্রাউন্ড জবের জন্য মনিটরিং এবং অ্যালার্টিং সেট আপ করার দম দেবে কোনো ম্যানুয়াল উপায়ে। AppSignal-এ, এটি খুব সহজ: আমরা এটি আপনার জন্য ট্র্যাক করি সাইডকিউ ম্যাজিক ড্যাশবোর্ডে (যেটি আপনার কোনো সেটআপ ছাড়া জেনারেট হয়, যখন আপনি আমাদের জেমের সাম্প্রতিক ভার্সন রান করেন)। এই সেটআপে, আপনি জব স্ট্যাটাস প্রতি কিউ মনিটর করতে চাবেন এবং ফেইলার রেটের জন্য ট্রিগার সেট করবেন Slack, PagerDuty, ইমেল বা আপনি যা ব্যবহার করেন সেটিতে অ্যালার্ট পেতে।

কম, বড় জব?

আমরা কনকারেন্সি দিয়ে স্পিড বাড়ানোর কুইক লুক দিয়েছি CPU ট্রেড-অফ করে। এখন, দেখি মেমরি বা IO, বা আরও কমপ্লেক্সিটি ট্রেড-অফ করে স্পিড বাড়ানো। আপনি ভাবতে পারেন বড় জব তৈরি করে এটি করা যায়। আইডিয়া হবে বড় জব ফাস্টার হতে পারে কারণ সেগুলোর প্রতি অপারেশনের জন্য সাইডকিউ ওভারহেড নেই। আমাদের অভিজ্ঞতাতে যাইহোক, সাইডকিউ ওভারহেড शायद ही কখনো আপনার পারফরম্যান্স কিল করে। আমরা দেখি, ডাটাবেস কুয়েরি যা জবটি করে সেটি প্রায়শই পারফরম্যান্স কিল করে। আমরা দেখেছি একাধিক জব কম্বাইন করে, কম কুয়েরি পারফর্ম করার জন্য একটি গুরুত্বপূর্ণ পথ ভালো পারফরম্যান্সের দিকে। সরলীকৃত: ১০০০ রেকর্ডের একটি আপডেট করা ১ রেকর্ডের ১০০০ আপডেটের চেয়ে ভালো।

এটি কাজ করে কিনা ভাঙে কিনা তা দেখতে কী মনিটর করব

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

একটি ট্রেড-অফ যা আপনার APM-এ দেখাবে না

বড় জবের বড় সমস্যা হল সেগুলো কোড করা কঠিন। আপনাকে ইনডিভিজুয়াল জবগুলো এক্সপ্লিসিটলি আইডেমপটেন্ট করতে হবে এবং তাদের স্ট্যাটস ট্র্যাক রাখতে হবে। একটি সিম্পল উদাহরণে: আপনার কাছে একটি জব আছে যা একজনকে মেইল করে এবং সেটি ফেল করে, আপনি সেটি রিট্রাই করতে পারেন একটু क्षতির বিনা। ১০০০ জনকে মেইল করার সময়, যদি জবটি ফেল করে, আপনি চান না ২৪০ জনকে যাদের আগে মেইল করেছেন সেগুলোর কাছে রিসেন্ড করা। এটিকে নিশ্চিত করা কোডকে আরও কমপ্লেক্স করে।

বাস্তবতার আসল জটিলতা

আরেকবার রিয়েলিটি চেক। প্রায়শই, আপনার ব্যাকগ্রাউন্ড প্রসেসগুলো সাইডকিউ-এ চলা যেকোনো কিছুর জন্য স্লো হতে পারে না। হতে পারে আপনি যে ডাটাবেস কুয়েরি করছেন সেটি স্লো কারণ সেটি যে হোস্টে রান করছে সেটি মেমরি আউট হচ্ছে। এই পোস্টের জন্য একটি কুল উদাহরণ খুঁজতে গিয়ে, আমরা এমন একটি সিনেরিওতে পড়েছি: আসলতে ডুরেশন পিক করছিল কারণ এক্সটার্নাল API-এর লং রেসপন্স টাইম ছিল। সাইডকিউ-এ কিছুই সেটি সমাধান করবে না। কারণ একটি সমস্যা এক জায়গায় দেখা যেতে পারে কিন্তু কারন কোথাও অন্য জায়গায় থাকতে পারে, AppSignal-এ আমরা প্রোডাক্টটি এমনভাবে বিল্ড করেছি যাতে এররস, পারফরম্যান্স, এবং হোস্ট মেট্রিক্স সব একসাথে থাকে। এই কম্বাইনড মেট্রিক্স ভিউ проблеمر রুট কজ খুঁজে বের করা সহজ করে দেবে।

কোনো সহজ উত্তর নেই, কি?

যদিও আমরা এই আর্টিকেলটি সাইডকিউ মনিটরিং এবং অপ্টিমাইজেশনের বেসিক দিয়ে শুরু করলাম, আমরা তৎক্ষণ বাস্তবতার সাথে মুখোমুখি হলাম যে স্পিড খরচ করবে CPU এবং IO। অথবা মেমরি। অথবা আরও কমপ্লেক্সিটি ইন্ট্রোডিউস করবে। এবং যদিও আর্কিটেকচারে পারফরম্যান্সের কিছু কমপ্লেক্সিটি ছুঁয়েছি, বাস্তবতা হল আমরা এই পোস্টে ৯৯% কঠিন জিনিসপত্র দিয়ে স্কিপ করেছি। তাই, যদিও আমরা আপনার সহজ উত্তর আশা হরণ করে দিয়েছি, আমরা আশা করি এই আর্টিকেল আপনার সাইডকিউ সেটআপ অপ্টিমাইজ এবং মনিটর করার ওপর কিছু চমৎকার চিন্তা জাগিয়েছে!

  1. GCE, Cloud Storage, এবং Pub/Sub ব্যবহার করে Ruby-তে একটি विश्वস্ত আপটাইম মনিটরিং সিস্টেম বিল্ড করুন

  2. AWS-এ Sidekiq স্কেলিং: একটি প্র্যাক্টিক্যাল গাইড

  3. আইফোনের RAM, CPU ও ব্যাটারি ব্যবহার ট্র্যাক করুন: সর্বোচ্চ পারফরম্যান্সের জন্য

  4. আপনার ডেটা রক্ষা করুন: অ্যান্ড্রয়েড ফোন ম্যানুয়ালি পরিষ্কার করার গোপন ঝুঁকি