در این بخش ما قصد داریم در مورد اولین ویژگی کیفیت، که عملکرد است، صحبت کنیم و در ادامه چند نوع معیار عملکرد را تعریف کرده و در مورد ملاحظات مهم هنگام تعیین اهداف، اندازه گیری و تجزیه و تحلیل عملکرد سیستم خود صحبت خواهیم کرد.
بنابراین اجازه دهید در مورد اولین معیار عملکرد، زمان پاسخ، صحبت کنیم.
زمان پاسخ
اغلب، وقتی در مورد عملکرد یک سیستم یا یک برنامه صحبت می کنیم، ما بلافاصله به سرعت فکر می کنیم.به طور شهودی، وقتی با سیستمی تعامل می کنیم که سریع به درخواست ما پاسخ می دهد، آن سیستم را با عملکرد بالا مرتبط می کنیم.
بنابراین بیایید به طور رسمی یکی از رایج ترین معیارهای عملکرد، زمان پاسخگویی را تعریف کنیم.
به عنوان زمان بین ارسال درخواست توسط مشتری و دریافت پاسخ.
زمان پاسخ معمولا به دو قسمت تقسیم می شود:
- واضح ترین بخش زمان پردازش است، یعنی زمانی که سیستم ما برای پردازش درخواست و ارسال پاسخ طول می کشد.این اساساً مقدار زمانی است که در کد ما، در پایگاه داده ما صرف می شود یا سایر بخشهای سیستم ما به طور فعال روی پردازش درخواست، اعمال منطق تجاری و ایجاد و ارسال پاسخ کار میکنند.
- این مورد معمولا کمتر آشکار و اغلب فراموش شده از زمان پاسخ، زمان انتظار است.زمان انتظار مدت زمانی است که درخواست یا پاسخ به صورت غیر فعال در سیستم ما صرف می کند. معمولاً آن زمان در سیمهای شبکه، سوئیچها و دروازههای شبکه ما یا در صفهای شبکه یا نرمافزار ما صرف میشود و منتظر رسیدگی یا ارسال به مقصد است.
به عنوان نکته جانبی، در برخی از کتابها یا منابع، زمان انتظار به عنوان تأخیر یاد میشود، در حالی که در منابع دیگر، زمان پاسخ و تأخیر به جای یکدیگر استفاده میشوند دلیل اینکه این اصطلاح خیلی زیاد است این است که تأخیر به سادگی به معنای تاخیر است.
بسیاری از مهندسان به اشتباه تصور می کنند که زمان پاسخ یا تنها یا مهمترین معیار عملکرد است، و برخی تا آنجا پیش می روند که فکر می کنند زمان پاسخ، تعریف عملکرد است، اما زمان پاسخ، معیار عملکرد نهایی نیست و برای برخی از سیستم ها، به اندازه معیار عملکرد بعدی که قرار است در مورد آن صحبت کنیم مهم نیست.
برای مثال، اگر ما در حال طراحی یک سیستم گزارشگیری توزیعشده هستیم که جریان ثابتی از گزارشها را که از صدها و شاید هزاران سرور جمعآوری و تجزیه و تحلیل میکند، مهمترین معیار عملکرد، توانایی دریافت و تجزیه و تحلیل مقادیر زیادی از دادهها در یک دوره معین است.
هر چه سیستم ما بتواند داده های بیشتری را در واحد زمان دریافت و تجزیه و تحلیل کند، عملکرد سیستم ما بالاتر است.
اصطلاحی که ما برای این نوع معیار عملکرد استفاده می کنیم، توان عملیاتی است. تعریف کلی توان عملیاتی یا مقدار کار انجام شده توسط سیستم ما در واحد زمان است.
در این صورت توان عملیاتی به عنوان تعداد کارهای انجام شده در ثانیه اندازه گیری می شود، یا بسته به مورد استفاده، توان عملیاتی را می توان به عنوان مقدار داده پردازش شده توسط سیستم ما در واحد زمان تعریف کرد. در این صورت با بیت، بایت یا مگابایت در ثانیه اندازه گیری می شود.
اکنون اجازه دهید در مورد چند ملاحظات مهم در هنگام اندازه گیری و تجزیه و تحلیل عملکرد سیستم خود صحبت کنیم.
اولین ملاحظات مربوط به اندازه گیری زمان پاسخگویی است که توسط مشتری به درستی درک می شود.
اغلب مهندسان این اشتباه را مرتکب می شوند که فقط زمان پردازش را با اندازه گیری زمان صرف شده در کد ما اندازه گیری می کنند و آن را با اندازه گیری زمان پاسخ اشتباه می گیرند.
در چنین مواردی، کاربر ممکن است زمان پاسخگویی بسیار طولانی را تجربه کند، در حالی که نمودارهای عملکرد ما نشان می دهد که همه چیز عادی است.
برای نشان دادن وضعیت، اجازه دهید دو درخواست را که تقریباً به طور همزمان به سیستم ما میآیند، در نظر بگیریم، و فرض کنیم که سیستم ما میتواند تنها یک درخواست را در یک زمان پردازش کند.
در حالی که درخواست اول توسط سیستم ما در حال پردازش است، درخواست دوم در صف های شبکه یا نرم افزار ما در انتظار است و تنها زمانی که پاسخ درخواست اول ساخته شده و به مشتری ارسال شود، سیستم ما به پردازش درخواست دوم می پردازد و پاسخ را ارسال می کند
حال اگر زمان انتظار را فراموش کنیم و فقط زمان صرف شده در کد یا سیستم خود را اندازه گیری کنیم، زمان پردازش و نه زمان پاسخ را دریافت می کنیم که در این حالت نشان می دهد که تکمیل هر درخواست 10 میلی ثانیه طول کشیده است.
اما از دیدگاه کاربر، که زمان پاسخ کلی را می بیند، درخواست اول 10 میلی ثانیه طول می کشد در حالی که درخواست دوم 20 میلی ثانیه طول می کشد زیرا زمان انتظار اضافی برای تکمیل درخواست اول است.
و اگر میانگین آن را در نظر بگیریم، 15 میلی ثانیه به عنوان میانگین زمان پاسخ دریافت می کنیم.
اکنون، این ممکن است نه تنها در صورتی اتفاق بیفتد که بتوانیم در هر زمان فقط یک درخواست را پردازش کنیم، بلکه هر زمان که سیستم ما کمی با درخواستهای دیگر بارگذاری شود.
توزیع زمان پاسخ
فرض کنید چندین سرور داریم که برنامه ما را اجرا می کنند و در هر دقیقه زمان پاسخگویی را از هر سرور جمع آوری می کنیم. که در آن هر زمان پاسخ با یک درخواست متفاوت از یک کاربر متفاوت مطابقت دارد.
اکنون، در حالت ایدهآل، ما میخواهیم تمام آن نمونههای زمان پاسخدهی یکسان باشد، به این معنی که همه مشتریان ما دقیقاً تجربه مشابهی دارند.
با این حال، در عمل، ما همیشه توزیع زمان پاسخ را دریافت خواهیم کرد.
برخی بسیار خوب و برخی به طرز شگفت آوری بسیار بد خواهند بود.
- بنابراین با دانستن اینکه همیشه چنین توزیعی خواهیم داشت، متریک چیست؟
- ما باید اهداف خود را در اطراف تعیین و اندازه گیری کنیم؟
- آیا این باید میانگین زمان پاسخ، میانه، یا شاید حداکثر زمان پاسخ باشد؟
برای پاسخ به این سوال، ابتدا باید یاد بگیریم که چگونه همه آن نمونه ها را سازماندهی و تجزیه و تحلیل کنیم.
اولین راه برای شروع تجزیه و تحلیل چنین توزیعی این است که نمونه های زمان پاسخ را مرتب کنیم و آنها را در یک هیستوگرام قرار دهیم.
این هیستوگرام فرکانس هر زمان پاسخ را نشان می دهد که تصویر بهتری از توزیع زمان پاسخ به ما می دهد.
به عنوان مثال، با نگاهی به هیستوگرام، می بینیم که سه درخواست دارای زمان پاسخ دهی 10 میلی ثانیه بوده و تنها یک درخواست دارای زمان پاسخ 40 میلی ثانیه بوده است.
از آن هیستوگرام، ایجاد نمودار یا جدول توزیع صدک آسان است.
و در آن جدول، صدک x مقداری است که در زیر آن x درصد مقادیر را می توان یافت.