|
عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
|
افزايش كارآئی برنامه های وب در ASP.NET 2.0 (بخش سوم) |
مديريت وب |
4447 |
7 |
4.4 |
افزايش كارآيی برنامه های وب در ASP.NET 2.0
افزايش كارآئی برنامه های وب در ASP.NET 2.0
(بخش سوم)
در
بخش
های
اول و
دوم به
مجموعه ای از نكات اشاره گرديد كه رعايت آنها در زمان طراحی می تواند زمينه پياده
سازی يك برنامه وب كارآ را فراهم نمايد . در اين بخش به بررسی امكانات و ابزارهای
موجود برای تست برنامه های وب خواهيم پرداخت .
يكی از مسائل مهم در ارتباط با برنامه های وب ، عدم تست آنها با شرايط مشابه و يا
نزديك به محيط واقعی است . در اين راستا می توان از نرم افزارها و يا ابزارهای
مختلفی استفاده كرد تا بتوان عملكرد و سرويس دهی يك برنامه وب را قبل از زير
بار رفتن واقعی مشاهده و بررسی نمود .
برای قضاوت در خصوص تلاش های انجام شده در ارتباط با بهبود كارآئی يك برنامه
وب ، می بايست قادر به سنجش كارآئی آن در عمل باشيم . در مواردی كه
كارآئی يك برنامه كند و نااميد كننده است ، می بايست بر اساس اطلاعات
كافی اقدام به شناسائی گره ها و عوامل تاثير گذار بر روی كارآئی برنامه های
وب نمائيم تا از اين رهگذر بتوان مشكل و يا مشكلات را برطرف و يك برنامه وب كارآ
را آماده استفاده عملياتی و نهائی
كرد .
شركت مايكروسافت در اين رابطه ابزارها و برنامه های متعددی را ارائه نموده است كه
در ادامه به بررسی آنها خواهيم پرداخت .
Stress Testing
پياده كنندگان برنامه های وب می توانند از ابزارهای تست متعدد به همراه
برخی امكانات ارائه شده در
فريمورك دات نت برای پروفايل كردن برنامه های ASP.NET
استفاده نمايند .
اغلب ، گذر از مرحله تست و اعمال يك پل ارتباطی بين نتايج تست و برنامه
وب كار
زمان گيری است . به عنوان نمونه ممكن است در مرحله تست بتوان اطلاعات
مهمی نظير TTFB ( برگرفته شده از Average Time to
first byte ) كه نشان دهنده مدت زمان ارسال درخواست و دريافت اولين بايت از
سرويس دهنده است و يا TTLB ( برگرفته شده از
Average Time to last byte ) كه نشان دهنده زمان ارسال درخواست و
دريافت آخرين بايت از سرويس دهنده است را ركورد و ثبت نمود . ولی بدون استفاده از
يك روش دقيق و صحيح اندازه گيری
، تشخيص پارامترهای تاثيرگذار در كاهش كارآئی يك
برنامه وب كار مشكلی خواهد بود .
به عنوان مثال ، كاهش كارآئی يك برنامه وب
ممكن است مربوط به سرعت پائين هارد ديسك ، تنظيمات ضعيف ASP.NET
، عدم طراحی صحيح بانك اطلاعاتی و يا عدم طراحی مناسب برنامه باشد . در واقع، تست
كارآئی علم و دانش مختص به خود را دارد .
برای انجام اكثر تست های اوليه ، می توان از يك سرويس دهنده اختصاصی و مجموعه ای از
سرويس گيرندگان استفاده نمود كه از طريق يك شبكه سريع ايزوله شده با سرويس دهنده وب
تعامل برقرار می نمايند . بدين منظور می توان از يك ابزار توليد
load كه بطور
اتوماتيك مجموعه ای از صفحات را از سرويس دهنده درخواست می نمايد استفاده كرد تا يك
لود سنگين شبيه سازی گردد .
ACT
( برگرفته شده از Application Center Test ) و
WAST
( برگرفته شده از Web Applications Stress Tool )
دو نمونه متداول در اين زمينه می باشند .
با استفاده از ابزارهای فوق می توان شرايط حاكم بر يك برنامه وب در دنيای واقعی را
شبيه سازی نمود ( تداوم درخواست صفحات از طريق چندين اتصال همزمان ) . اكثر
ابزارهای توليد load
، فعاليت ها و كارهائی را كه انجام می دهند ثبت می نمايند
تا امكان بررسی آنها توسط طراحان و پياده كنندگان وجود داشته باشد .
علاوه بر برنامه های فوق ، می توان
نتايج را با استفاده از Windows performance counters ثبت و مشاهده كرد .
performance counter
برنامه performance counters ويندوز يكی از ابزارهای
متداول موجود
برای اندازه گيری كارآئی يك برنامه
می باشد . با استفاده از برنامه فوق می توان به
تعداد دلخواه counter
را اضافه و يا مستقيما"
كارآئی را از طريق جعبه محاوره ای system performance
اندازه گيری كرد .
برای فعال كردن برنامه فوق می توان از مسير
Settings|Control Panel |Administrative Tools |Performance استفاده كرد. اين
برنامه به صورت پيش فرض صرفا"
كارآئی پردازشگر
اصلی سيستم و ديسك
را اندازه گيری می
نمايد .
پس از نصب
ASP.NET ، مجموعه ای
counter مفيد برای رديابی و ارزيابی كارآئی برنامه های وب
نيز نصب می گردد . برای
اضافه كردن counter ، با كليك
(سمت راست) بر روی ليست
counter و انتخاب properties
، می توان گزينه های مختلفی را پيكربندی نمود ( نظير تغيير شكل ظاهری نمودار و نحوه
ثبت اطلاعات در قالب يك گزارش ) .
يكی از مهمترين گزينه ها بخش مربوط به Data
است كه با استفاده از آن می توان به ليست
موجود يك counter را
اضافه و يا از آن حذف نمود . برای شروع ،
می توان تمامی كانتر
های پيش فرض را حذف و با استفاده از گزينه Add
موارد دلخواه را به ليست اضافه نمود .

شكل 1 : اضافه كردن يك counter
جديد
در جعبه محاوره ای Add Counter ، چندين ويژگی مهم از جمله امكان مشخص كردن نام كامپيوتر
وجود دارد . به عبارت ديگر
، شما می توانيد كارآئی يك كامپيوتر راه دور را مانيتور نمائيد . مانيتورينگ كارآئی
سرويس دهنده وب از طريق يك سرويس گيرنده ايده آل است چراكه احتمال تاثير عملكرد
مانيتورينگ بر روی سرويس دهنده
از بين خواهد رفت . ويژگی مهم بعدی ،
performance object است كه با استفاده از آن می توان يك
گروه counter را متناسب با شی مورد نظر انتخاب نمود .
گروه ASP.NET اطلاعات كاملی را در خصوص كارآئی كلی
برنامه های ASP.NET ارائه می نمايد . اين در حالی است كه
گروه ASP.NET Application
اطلاعاتی را در رابطه با يك برنامه وب خاص ارائه می نمايد .
برخی از انواع مفيد
كانترها به همراه
گروه ، نام counter
و عملكرد هر يك از آنها در جدول 1 نشان داده شده است .
سطرهای ستاره دار، كانترهائی را مشخص می نمايد كه با استفاده از آنها می توان اشكال
زدائی
يك مسئله را انجام داد . ساير سطرها
، كانترهائی را نشان می دهد كه استفاده از آنها همواره مفيد می باشد .
|
گروه |
counter |
عملكرد |
|
processor |
% CPU Utilization |
درصد استفاده از
CPU را نشان می دهد . در صورتی كه استفاده از
CPU در يك بازه زمانی صرفنظر از
load سرويس گيرنده ثابت
باقی بماند ، نشان دهنده
انتظار يك برنامه برای استفاده از يك منبع محدود است . |
|
ASP.NET |
Requests Queued |
تعداد
درخواست های در انتظار پردازش را مشخص می نمايد . از counter
فوق برای مشخص كردن حداكثر
load سرويس دهنده وب استفاده می گردد . |
|
ASP.NET |
* Application Restarts ,
Worker Process Restarts |
تعداد
دفعاتی
كه پردازه ASP.NET راه اندازی مجدد و يا
reset می گردد را مشخص می نمايد . اين
counter نشاندهنده بروز مسائل ناخواسته است. |
|
ASP.NET Applications |
Requests/Sec |
حداكثر توان عملياتی
برنامه وب را مشخص می نمايد . |
|
ASP.NET Applications |
* Errors Total |
تعداد خطاء
توليد شده توسط يك برنامه وب را مشخص می نمايد . مقدار اين counter
در عمل می بايست صفر و يا نزديك به صفر باشد . |
|
ASP.NET Applications |
Pipeline Instance Count |
تعداد
درخواست pipeline يك برنامه را مشخص می نمايد
و از آن برای مشخص شدن حداكثر درخواست همزمانی كه می توان به آنها پاسخ داده شود
، استفاده می گردد .
در صورتی كه مقدار اين
counter تحت يك load پائين باشد ،
نشان دهنده استفاده مطلوب از CPU است . |
|
System |
* Context Switches/sec |
پارامتر
فوق تعداد دفعات سوئيچينگ
thread context را نشان می دهد .
در صورتی كه مقدار اين پارامتر زياد باشد ، thread های مختلف برای
استفاده از يك منبع محدود
با يكديگر رقابت می نمايند . |
جدول 1 : ليست برخی
كانترهای مفيد
دستيابی به كلاس های performance counters از طريق كد
با توجه به اين كه ASP.NET بخشی از
فريمورك دات نت است ، پياده كنندگان برنامه های وب می توانند در صفحات وب نوشته شده
با استفاده از فناوری ASP.NET به تمامی كلاس های موجود
در فريمورك دات نت دستيابی داشته باشند . اين بدان معنی است كه از طريق يك صفحه وب
ASP.NET می توان عمليات متعددی نظير پردازش تصاوير ،
نوشتن در event log و يا خواندن و انعكاس performance
counters در خروجی را انجام داد . گرچه استفاده از امكاناتی از اين قبيل ممكن است
چالش های امنيتی مختص به خود را دارا باشد ولی با رعايت نكات ايمنی می توان پتانسيل
برنامه های وب را در جهت ارائه خدمات مطلوب و بهينه به كاربران افزايش داد .
به عنوان نمونه می توان يك performance counter جديد را اضافه و يا مقدار متناظر
با يك
performance counter را بازيابی و در ادامه
آن را در يك صفحه وب
و يا يك برنامه desktop نمايش داد .
برای استفاده از
پتانسيل فوق ، از namespace با نام
System.Diagnostics استفاده می گردد . ليست
برخی از كلاس های دات نت به
منظور تعامل با performance counter
در جدول 2 نشان داده شده است .
|
كلاس |
عملكرد |
|
PerformanceCounter |
ارائه يك
counter خاص كه شامل اطلاعاتی نظير نام
counter و نوع داده ئی است كه می بايست ثبت گردد . |
|
PerformanceCounterCategory |
يك گروه
counter را كه شامل يك و يا چندين
counter است ، مشخص
می نمايد . |
|
CounterCreationData |
ارائه داده مورد نياز
برای ايجاد يك counter جديد . |
|
CounterSample |
ارائه
مجموعه ای از اطلاعات ثبت شده توسط counter .
در اين رابطه يك RawValue ( شماره
ثبت شده ) ، يك
TimeStamp ( زمانی كه مقدار ثبت شده است ) و اطلاعات
اضافه ای در رابطه با نوع counter و نحوه خواندن
آن را ارائه می نمايد . |
جدول 2 : ليست
برخی كلاس های دات نت برای كار با
Performance counter
مثال : نمايش ظرفيت آزاد حافظه فيزيكی در يك صفحه وب
در كد فوق ، ظرفيت آزاد حافظه فيزيكی بر حسب مگابايت در صفحه وب نمايش
داده می شود . برای انجام اين كار ، در ابتدا يك نمونه از كلاس PerformanceCounter
به همراه نام گروه Memory و counter
با نام Available MBytes ايجاد شده است . برای ايجاد يك نمونه از كلاس
PerformanceCounter از كد زير استفاده شده است .
|
Dim perfFreeMem as New
PerformanceCounter("Memory", "Available MBytes") |
بدين ترتيب يك شی با
نام perfFreeMem ايجاد كه
Performance counter مورد نظر را ارائه می نمايد .
برای خواندن مقدار جاری counter از متد NextValue
استفاده می گردد تا مقدار بعدی
Performance counter را برگرداند . با نسبت دادن مقدار
برگردانده شده به خصلت Text كنترل سرويس دهنده
Label ، امكان مشاهده آن در خروجی فراهم می گردد .
|
<%@ Import Namespace =
System.Diagnostics %>
<script runat="server">
sub Page_Load(sender as Object, e as EventArgs)
Dim perfFreeMem as New PerformanceCounter("Memory",
"Available MBytes")
lblFreeMem.Text = perfFreeMem.NextValue()
end sub
</script>
Free Memory (in MB):
<asp:Label id="lblFreeMem" runat="server" /> |
مراحل انجام كار در
مثال فوق به شرح زير است :
-
مرحله اول : استفاده از
namespace با نام System.Diagnostics در ابتدای برنامه
-
مرحله دوم : ايجاد و
مقداردهی مناسب يك نمونه از كلاس PerformanceCounter تا قادر به خواندن
counter با نام Available MBytes از گروه Memory
باشد .
-
مرحله سوم : نسبت دادن
مقدار برگردانده شده توسط متد NextValue به خصلت Text
كنترل سرويس دهنده label با نام lblFreeMem
در بخش چهارم به بررسی
امكانات
caching در ASP.NET 2.0 خواهيم پرداخت .