Latency ও Throughput: সময় ও কাজের হার
Latency and Throughput
এই পাঠের সূচিপত্র
এই পাঠে যা শিখবেন
- Latency ও throughput-এর পার্থক্য
- Average-এর বদলে percentile দেখা
- Queueing ও bottleneck-এর সম্পর্ক
সমস্যা দিয়ে শুরু
Product page-এর average response ১০০ ms, তবু কিছু customer বলেন checkout খুব ধীর। Average-এর মধ্যে অল্প কিছু পাঁচ সেকেন্ডের response চাপা পড়ে গেছে। একই সময়ে server প্রতি সেকেন্ডে বেশি request শেষ করছে। তাহলে কি system দ্রুত হয়েছে? এক request-এর সময় ও পুরো system-এর কাজের হার আলাদা মাপলে উত্তর পরিষ্কার হয়।
সহজ করে বুঝি
Latency হলো একটি operation শুরু থেকে শেষ হওয়ার সময়। Throughput হলো একটি সময়ে শেষ হওয়া কাজের সংখ্যা—যেমন request/second। বেশি throughput মানেই কম latency নয়। একসঙ্গে আরও কাজ গ্রহণ করলে queue বড় হয়ে individual response ধীর হতে পারে।
p95 latency মানে নির্বাচিত sample-এর প্রায় ৯৫ শতাংশ ওই সময়ের মধ্যে শেষ হয়েছে। p99 আরও ধীর অংশকে দৃশ্যমান করে। Percentile দেখার সময় endpoint, region, measurement window ও error response অন্তর্ভুক্তির নিয়ম একই রাখুন। Client-perceived latency server processing-এর চেয়ে বেশি হতে পারে, কারণ network ও rendering-ও সময় নেয়।
পরিচিত একটি উপমা
একটি bank counter একজন customer-কে দুই মিনিটে service দেয়। পাঁচটি counter খুললে প্রতি মিনিটে বেশি customer-এর কাজ হতে পারে, কিন্তু একটি customer-এর কাজের নিজস্ব সময় সবসময় কমবে না। ভিড় বাড়লে অপেক্ষার লাইন যোগ হবে; সেটিই queueing delay।
নকশাটি দেখুন
Diagram লোড হচ্ছে…
Diagram-এর text flow দেখুন
flowchart LR A[Request arrives] --> B[Queue wait] B --> C[App processing] C --> D[Database wait] D --> E[Response] F[Total completed per second] -. Throughput .-> E
একটি request-এর total budget ভেঙে দেখুন: network, load balancer queue, PHP execution, database ও external HTTP call। যে অংশ সবচেয়ে ধীর বা saturated, আগে সেটি মাপুন। অনুমান করে cache যোগ করলে অন্য bottleneck অপরিবর্তিত থাকতে পারে।
PHP ও Laravel-এ প্রয়োগ
একটি read-only service call-এর সময় মাপার illustrative PHP snippet। hrtime monotonic clock হওয়ায় elapsed duration মাপতে উপযোগী। এটি এক request-এর measurement; p95 বের করতে অনেক sample-এর histogram লাগে। Sensitive query data log করবেন না।
use Illuminate\Support\Facades\Log;
$start = hrtime(true);
$products = \App\Models\Product::query()
->where('active', true)
->limit(20)
->get(['id', 'name']);
$durationMs = (hrtime(true) - $start) / 1_000_000;
Log::info('catalog.read', [
'duration_ms' => round($durationMs, 2),
'count' => $products->count(),
]);সুবিধা, সীমাবদ্ধতা ও trade-off
Batching throughput বাড়াতে পারে, কিন্তু batch পূর্ণ হওয়ার অপেক্ষা latency বাড়াতে পারে। Concurrency বাড়ালে idle resource কাজে লাগে; database saturated হলে উল্টো lock ও queue wait বাড়ে। তাই latency, throughput, errors ও saturation একসঙ্গে পর্যবেক্ষণ করুন।
সাধারণ ভুল
- Average ভালো দেখেই tail latency উপেক্ষা করা।
- Request আসার হারকে completed throughput বলা।
- Load test-এ শুধু সফল response দেখা, timeout বাদ দেওয়া।
- ভিন্ন endpoint-এর percentile একসঙ্গে মিশিয়ে সিদ্ধান্ত নেওয়া।
আরও একটু গভীরে
Stable system-এ Little’s Law আনুমানিকভাবে বলে, in-flight কাজের সংখ্যা = arrival rate × system-এ কাটানো average সময়। প্রতি সেকেন্ডে ১০০ কাজ এবং average ০.২ সেকেন্ড হলে average in-flight প্রায় ২০। এটি steady-state model; overload বা অসীম বাড়তে থাকা queue-তে সরাসরি প্রয়োগ করলে ভুল ধারণা হবে।
মনে রাখুন
- এক request-এর সময় এবং system-এর কাজের হার আলাদা।
- p95/p99 দিয়ে ধীর user experience খুঁজুন।
- Measurement boundary এবং workload সবসময় লিখুন।
নিজে চেষ্টা করুন
ধরা হলো ১০০টি response: ৯০টি ১০০ ms, ৯টি ৫০০ ms এবং একটি ৫০০০ ms। Average হিসাব করুন। শুধু average দিয়ে শেষ customer-এর অভিজ্ঞতা বোঝা যায় কি?
নিজের বোঝা যাচাই করুন
1. Throughput বাড়লে latency অবশ্যই কমবে?
না। Concurrency বা batching throughput বাড়াতে পারে, কিন্তু queueing ও waiting latency বাড়াতে পারে।
2. p99 কি সর্বোচ্চ latency?
না। Sample-এর একটি percentile; এর চেয়েও ধীর response থাকতে পারে।
3. Server ৫০ ms হলে user ৫০ ms-এ দেখবেন?
নিশ্চিত নয়। DNS, connection, network এবং browser rendering-এর সময়ও লাগে।
4. Queue wait কেন গুরুত্বপূর্ণ?
Request কাজ শুরুর আগেই অপেক্ষা করতে পারে। শুধু execution time log করলে সেই delay হারিয়ে যায়।
5. কোন চারটি মাপ একসঙ্গে দেখবেন?
Latency, completed throughput, error rate এবং resource saturation।
আরও পড়ুন
এই পাঠের কুইজ
এই পাঠ থেকে ২টি প্রশ্ন। উত্তর দিয়ে ব্যাখ্যা দেখুন; অধ্যায়ের কুইজ আলাদাভাবে দিতে হবে।
এই পাঠের ২টি প্রশ্নের উত্তর দিন। পাস করতে দুটিই সঠিক হতে হবে।
জমা দেওয়ার পর সঠিক উত্তর ও ব্যাখ্যা দেখবেন। ফলাফল এই ব্রাউজারে সংরক্ষিত থাকবে। অনুশীলনের ফল অধ্যায় সম্পন্নের হিসাবে যোগ হয় না।
অগ্রগতি এই ব্রাউজারে সংরক্ষিত থাকে। শুধু পাঠ খুললে সম্পন্ন হয় না।