سیستم کند است؟ این ۴ عدد دروغ نمیگویند
کند شدن API یکی از رایجترین چالشها در سیستمهای نرمافزاری است.
اما تشخیص اینکه دقیقاً چه چیزی کند شده بدون داده و متریک، عملاً غیرممکن است.
تحلیل عملکرد سیستم نیازمند اعداد واقعی و قابل اندازهگیری است؛ متریکهایی که بتوانند محل گلوگاهها و نقاط ضعف را بهدرستی مشخص کنند.
در این پُست به چهار متریک بنیادی میپردازیم که شناخت آنها برای هر مهندس نرمافزار ضروری است.
1- معیار Queries Per Second (QPS)
این معیار نشان میدهد سیستم شما در هر ثانیه چند درخواست ورودی دریافت میکند.
برای مثال، اگر سرور در یک ثانیه ۱۰۰۰ درخواست دریافت کند، مقدار QPS برابر با ۱۰۰۰ خواهد بود.
در نگاه اول، QPS متریکی ساده به نظر میرسد، اما چالش اصلی در پایداری آن نهفته است. بسیاری از سیستمها قادر به حفظ QPS بالا در بازههای زمانی طولانی نیستند و در شرایط فشار، بهتدریج دچار افت عملکرد میشوند.
2- معیار Transactions Per Second (TPS)
این معیار تعداد تراکنشهای کاملاً انجامشده در هر ثانیه را نشان میدهد.
یک تراکنش شامل کل مسیر پردازش درخواست است؛ از دریافت درخواست تا تعامل با دیتابیس و بازگشت پاسخ نهایی.
برخلاف QPS که صرفاً تعداد درخواستهای ورودی را نشان میدهد، TPS بیانگر میزان کار واقعی انجامشده است و معمولاً مهمترین متریک از دیدگاه کسبوکار محسوب میشود.
3- معیار Concurrency (همزمانی)
این معیار تعداد درخواستهای فعالی است که سیستم در یک لحظه در حال پردازش آنهاست.
برای مثال، ممکن است سیستم ۱۰۰ درخواست در ثانیه دریافت کند، اما اگر پردازش هر درخواست ۵ ثانیه طول بکشد، در عمل با ۵۰۰ درخواست همزمان مواجه خواهیم بود.
همزمانی بالا به معنای نیاز به مدیریت بهینهتر منابع، connection pool مناسب و کنترل دقیقتر threadها است.
4- معیار Response Time
این معیار مدت زمانی است که از آغاز یک درخواست تا دریافت پاسخ نهایی سپری میشود.
این متریک هم در سطح کلاینت و هم در سطح سرور اندازهگیری میشود و نقش کلیدی در تجربه کاربری و توان پردازشی سیستم دارد.
رابطه بین متریکها:
این چهار متریک بهطور مستقل عمل نمیکنند و رابطهی مشخصی میان آنها وجود دارد:
QPS = Concurrency ÷ Average Response Time
بر اساس این رابطه، افزایش همزمانی یا کاهش میانگین زمان پاسخ، منجر به افزایش توان پردازشی (Throughput) سیستم میشود.
تحلیل صحیح عملکرد سیستم بدون درک دقیق این متریکها ممکن نیست.
@DevTwitter | <Amir Rahimi Nejad/>