আপনি একটি ওয়েব সার্ভিসে অন-কল: ইনস্ট্যান্সের বহরের সামনে লোড ব্যালান্সার, ডাটাবেসের সামনে ক্যাশ, এবং 99.9 % উপলব্ধতার লক্ষ্য। প্রতি মিনিটে মডেল পাঠ্যবইয়ের সূত্র থেকে সারির বিলম্ব, টাইমআউট, ক্যাশ হিট ও ডাটাবেস লোড হিসাব করে — এবং আপনার সিদ্ধান্তের খরচ কত।
আপনি যা শিখবেন
পূর্ণ ব্যবহারের কাছে লেটেন্সি কেন বিস্ফোরিত হয় (Erlang C), এবং বুট বিলম্বসহ অটোস্কেলিং কেন সবসময় দেরিতে পৌঁছায়।
SLO, ত্রুটি বাজেট ও বার্ন-রেট অ্যালার্ট কীভাবে ঠিক করে কখন রোল ব্যাক করতে হবে।
ঠান্ডা ক্যাশ কীভাবে ডাটাবেস বিভ্রাটে পরিণত হয়, এবং কোন হাতিয়ার সময় কিনে দেয়: বাদ দেওয়া, অবনমন, ওয়ার্ম-আপ।
সিমুলেটর
সময় 0 মিনিট
▶ইনস্ট্যান্স পরিবেশন করছে
⚙ইনস্ট্যান্স বুট হচ্ছে
!খারাপ বিল্ডে ইনস্ট্যান্স
·ফাঁকা স্লট
•আগত অনুরোধ
নিয়ন্ত্রণ
বহরের সর্বনিম্ন সীমা। বাড়ালে ইনস্ট্যান্স সঙ্গে সঙ্গে চালু হয় — পরিবেশনের আগে তাদের বুট বিলম্ব লাগে।
ব্যবহার-হারের ওপর লক্ষ্য অনুসরণ; ইনস্ট্যান্স বুট হওয়ার সময় নতুন স্কেল-আউট নেই। বন্ধ = ঠিক সর্বনিম্ন।
কম = বেশি ফাঁক ও বেশি খরচ। মাপা ব্যবহার 100 %-এর বেশি হতে পারে না, তাই সম্পৃক্ত বহর শুধু ধাপে ধাপে বাড়ে।
দীর্ঘ TTL = বেশি হিট, কিন্তু উত্তর পুরোনো হতে পারে (গড় বয়স ≈ TTL/2)।
6 মিনিট ধরে গরম কী লোড করে (প্রতি মিনিটে ক্যাশের +12 %), বিনিময়ে 600টি বাড়তি ডাটাবেস কোয়েরি/s।
কম-অগ্রাধিকারের 30 %-এর (প্রিফেচ, ব্যাচ, ক্রলার) যে অংশ লোড ব্যালান্সারে “পরে আবার চেষ্টা করুন” বলে প্রত্যাখ্যাত হয়।
ভারী ফিচার প্রতি অনুরোধে 20 ms CPU ও একটি ডাটাবেস কোয়েরি যোগ করে। বন্ধ = মার্জিত অবনতি।
শেষ ভালো বিল্ড নতুন বহরে আবার ডেপ্লয় করে (5 মিনিট, দুবার বিল হয়), তারপর ট্র্যাফিক সরায়। আবার চাপলে প্রস্তুতি নতুন করে শুরু হয়; কোনো খারাপ বিল্ড চালু না থাকলে শুধু টাকা খরচ হয়।
সূচক
ত্রুটির হার
0.00%
স্বাভাবিক
p99 লেটেন্সি
342ms
স্বাভাবিক
অবশিষ্ট ত্রুটি বাজেট (30 দিন)
50.0%
স্বাভাবিক
বহরের ব্যবহার-হার
52%
স্বাভাবিক
বার্ন রেট (1 h)
0.0 ×
অনুরোধ
1125 req/s
পরিবেশনরত ইনস্ট্যান্স
10
বুট হওয়া ইনস্ট্যান্স
0
ক্যাশ হিট রেট
77 %
ডাটাবেসের ব্যবহার-হার
19 %
বাদ দেওয়া ট্র্যাফিক
0 %
বহরের খরচ
4.00 $/h
এ পর্যন্ত খরচ
0.00 $
ক্যাশ করা উত্তরের গড় বয়স
30 s
খারাপ বিল্ডে ট্র্যাফিক
0 %
সুপারিশ পাওয়া যাচ্ছে
100 %
প্রবণতা
সংকট দৃশ্যকল্প
স্তর 1 · খারাপ রিলিজ
09:10-এ একটি নতুন বিল্ড বের হয়। মাসটি আগেই কঠিন গেছে: ত্রুটি বাজেটের মাত্র 20 % বাকি। ডিপ্লয়ের কয়েক মিনিট পরে বার্ন-রেট পেজ বেজে ওঠে। বাজেট রক্ষা করুন।
শেষে ত্রুটি বাজেট অবশিষ্ট ≥ 18.5 %
ডিপ্লয়ের পরে গড় ত্রুটির হার ≤ 0.65 %
বহরের খরচ ≤ $9.50
স্তর 2 · আকস্মিক ভিড়
সেবাটির একটি লিঙ্ক দ্রুত ছড়াচ্ছে এবং আজ সকালে কোনো এক সময় ট্রাফিক বৃদ্ধির আশঙ্কা আছে — কেউ জানে না কখন বা কতটা বড়। আজ নতুন ইনস্ট্যান্স চালু হতে 8 মিনিট লাগে। যখন তা আসবে, নিষ্ক্রিয় সক্ষমতায় টাকা না পুড়িয়ে ত্রুটি ও বিলম্ব কম রাখুন।
গড় ত্রুটির হার ≤ 0.2 %
গড় p99 লেটেন্সি ≤ 400 ms
গড় বাদ দেওয়া ট্র্যাফিক ≤ 5 %
মোট খরচ ≤ $21
সুপারিশ সময়ের ≥ 85 % পাওয়া যায়
স্তর 3 · ঠান্ডা ক্যাশ
দুপুরের চূড়ায় একটি রক্ষণাবেক্ষণ স্ক্রিপ্ট পুরো ক্যাশ ফ্লাশ করে দেয়। প্রতিটি অনুরোধ এখন ডাটাবেসে যায়, যা স্বাভাবিক 85 % হিট রেটের জন্য মাপা ছিল। ডাটাবেস ওভারলোড না করে সার্ভিস ফিরিয়ে আনুন।
গড় ত্রুটির হার ≤ 1.5 %
প্রথম মিনিটের পরে ডাটাবেসের ব্যবহার কখনও 90 %-এর ওপরে নয়
ক্যাশ করা উত্তরের গড় বয়স গড়ে ≤ 90 s
মোট খরচ ≤ $9
সুপারিশ সময়ের ≥ 80 % পাওয়া যায়
গড় বাদ দেওয়া ট্র্যাফিক ≤ 5 %
ভিত্তি — সংখ্যার পেছনের মডেল
সিমুলেটরের ব্যবহৃত প্রতিটি সম্পর্ক, তার উৎসসহ। অনুমান হিসেবে চিহ্নিত ধ্রুবকগুলো দৃষ্টান্তমূলক ক্যালিব্রেশন।
অনুরোধ দৈনিক বক্ররেখা ও বিঘ্ন অনুসরণ করে; প্রতি মিনিটের সংখ্যা এলোমেলো (পয়সঁ, স্বাভাবিক আসন্নকরণ) এবং সামান্য ঝোঁকযুক্ত।
λ(t) = base × (1 + 0.25·sin(2π(t + clock − 6 h)/24 h)) × surge(t), clock = time of day at the start (peak at 12:00); count/min ≈ N(60λ, √(60λ)) × (1 + N(0, 0.02))[6]অনুমান: ওয়ার্কারের সংখ্যা, সার্ভিস সময়, ডাটাবেসের সক্ষমতা, ক্যাশের আকার, পূরণের গতি, দাম এবং খারাপ বিল্ডের ত্রুটির হার মাঝারি ওয়েব সার্ভিসের দৃষ্টান্তমূলক মান।
Erlang C: M/M/N ব্যবস্থায় একটি অনুরোধকে ফাঁকা ওয়ার্কারের জন্য অপেক্ষা করতে হওয়ার সম্ভাবনা।
N = instances × 16 workers, a = λ·S; C(a, N) = B / (1 − (a/N)(1 − B)), B = Erlang B[3][6]
অপেক্ষা-সময়ের লেজ: t-এর চেয়ে বেশি অপেক্ষার সম্ভাবনা সূচকীয়ভাবে কমে; 2 s টাইমআউটে যে অনুরোধ এখনও অপেক্ষায়, তা ব্যর্থ হয়। সক্ষমতার বেশি অংশ ব্যর্থ হয়।
সার্ভিস-সময় ও অপেক্ষা-সময়ের কোয়ান্টাইল থেকে p99 লেটেন্সি।
p99 ≈ S·ln 100 + ln(C/0.01)/(N/S − λ) (service + waiting quantile, an approximation)[3][6]আনুমানিক: সেবা ও অপেক্ষার কোয়ান্টাইল যোগ করা তাদের যোগফলের সঠিক p99 নয় (একটু বেশি বা কম হতে পারে); প্রতি মিনিটের মধ্যে সারিকে স্থিতিশীল ধরা হয় কারণ অনুরোধ মিলিসেকেন্ড নেয়।
লিটলের সূত্র: ব্যস্ত ওয়ার্কার = আগমনের হার × সার্ভিসে সময়।
TTL ক্যাশ: এলোমেলো অনুরোধে প্রতিটি মিস একটি TTL সময় শুরু করে, যার মধ্যে অনুরোধ হিট করে।
hit = warm × rT/(1 + rT), r = λ / 20,000 objects; mean age of a cached answer ≈ T/2[5]
ক্যাশ মিস ডাটাবেসে লোড দেয়; তার সারির বিলম্ব তাকে ছোঁয়া প্রতিটি অনুরোধ ধীর করে, যা অ্যাপ ওয়ার্কারদেরও ভরিয়ে তোলে।
DB load = λ·q·(1 − hit); query time = 5 ms/(1 − ρ_db) (≤ 250 ms); S = S_app + (1 − hit)·q·query time[6]অনুমান: ওয়ার্কারের সংখ্যা, সার্ভিস সময়, ডাটাবেসের সক্ষমতা, ক্যাশের আকার, পূরণের গতি, দাম এবং খারাপ বিল্ডের ত্রুটির হার মাঝারি ওয়েব সার্ভিসের দৃষ্টান্তমূলক মান।
SLO ও ত্রুটি বাজেট: বার্ন রেট বলে বাজেট অনুমোদিতের চেয়ে কত গুণ দ্রুত খরচ হচ্ছে।
budget = 1 − SLO = 0.1 %; burn = error rate / 0.1 %; Δbudget per min = burn / 43,200; burn (1 h) = mean error rate over the last 60 min / 0.1 % (window pre-filled with the opening minute)[1][2]
বুট বিলম্ব ও কুলডাউনসহ লক্ষ্য-অনুসরণকারী অটোস্কেলার।
desired = ⌈serving × utilization / target⌉ (utilization saturates at 100 %); new instances serve after the boot delay[6]অনুমান: ওয়ার্কারের সংখ্যা, সার্ভিস সময়, ডাটাবেসের সক্ষমতা, ক্যাশের আকার, পূরণের গতি, দাম এবং খারাপ বিল্ডের ত্রুটির হার মাঝারি ওয়েব সার্ভিসের দৃষ্টান্তমূলক মান।
মডেলে ব্যবহৃত অন্যান্য পরিচালনা ধ্রুবক।
16 workers/instance · app time 50 ms (+20 ms and +1 query with the feature on) · 2 queries/request · DB 4,000 queries/s · 20,000 hot objects · cache refill τ = 30 min (slower while the DB is saturated) · warm-up job +12 %/min for 6 min, +600 queries/s · timeout 2 s · 30 % low-priority traffic · bad build +5 % errors, ×1.25 CPU · rollback 5 min · $0.40 per instance-hour · scale-in by ≤ 20 % of the fleet after 10 quiet minutes · up to 40 instancesঅনুমান: ওয়ার্কারের সংখ্যা, সার্ভিস সময়, ডাটাবেসের সক্ষমতা, ক্যাশের আকার, পূরণের গতি, দাম এবং খারাপ বিল্ডের ত্রুটির হার মাঝারি ওয়েব সার্ভিসের দৃষ্টান্তমূলক মান।
এলোমেলোতা: সিডযুক্ত mulberry32 জেনারেটর; ব্যবহৃত বণ্টন — সুষম, সূচকীয় (বিপরীত CDF), স্বাভাবিক (Box–Muller), পয়সঁ (Knuth)। সিড দেখানো হয় এবং শেয়ার করা যায়।
M. Harchol-Balter — Performance Modeling and Design of Computer Systems: Queueing Theory in Action (M/M/k, server farms, capacity provisioning) — Cambridge University Press, 2013