افزايش كارآئي برنامه هاي وب در ASP.NET 2.0 ( بخش اول )
يكي از ملزومات كليدي در هر نوع برنامه كامپيوتري ميزان كارائي و قابليت پاسخگوئي سريع آن به كاربران است . طراحان و پياده كنندگان برنامه هاي كامپيوتري مي بايست در زمان طراحي ، پياده سازي و نوشتن كد به اين موضوع توجه جدي داشته ه هر صفحه وب از connection string مشابه استفاده نمايد ، بانك هاي اطلاعاتي نظير SQL server قادر به استفاده از connection pooling تعبيه شده در خود براي استفاده مجدد از يك اتصال براي بيش از يك سرويس گيرنده متوالي مي باشند . بدين ترتيب امكان استفاده از connection string به دفعات فراهم مي گردد. اين كار بطرز چشمگيري باعث بهبود سرعت مي گردد . در چنين مواردي مي توان از فايل web.config براي ذخيره connection string استفاده تا امكان بكارگيري آنها در صفحات متعدد يك برنامه وب فراهم گردد.
استفاده از date binding : سريعترين روش بازيابي و نمايش اطلاعات از يك بانك اطلاعاتي ، استفاده از يك DataReader و يا Dataset و نسبت دهي مستقيم آن به يك كنترل داده است . رويكرد فوق ممكن است به عمليات بيشتري جهت استفاده از تمپليت هاي سفارشي نياز داشته باشد ولي اين وضعيت بمراتب بهتر از حالتي است كه بطور دستي بين سطرها ( ركوردها ) حركت و آنها را در صفحه مورد نظر قرار داد.
استفاده از caching : در صورتي كه مجموعه اي خاص از داده متناوبا” درخواست و بندرت تغيير مي يابد ، مي توان آنها را جهت استفاده آتي cache نمود . با استفاده از سيستم caching ، در اولين مرتبه اي كه يك سرويس گيرنده درخواست اطلاعات را مي نمايد ، اطلاعات درخواستي از بانك اطلاعاتي خوانده شده و در حافظه موقت قرار مي گيرند . بدين ترتيب امكان استفاده مستقيم از اطلاعات cache شده بدون ضرورت دستيابي به بانك اطلاعاتي فراهم مي گردد . در بخش هاي بعدي به بررسي Output caching و data caching خواهيم پرداخت .
session state
session state يكي از بزرگترين محدوديت هاي تاثير گذار در خصوص كارآئي برنامه هاي نوشته شده با استفاده از ASP كلاسيك است . با اين كه در ASP.NET ويژگي هاي جديدي به منظور بهبود كاركرد session state ارائه شده است ولي همچنان لازم است كه از آن با دقت استفاده گردد .
اگر صرفا” ID يك خريدار كالا را در session state ذخيره كرده باشيم، درگير مسائلي خاص نخواهيم شد . در چنين مواردي مي توان يك سبد خريد كالاي الكترونيكي را با ذخيره ليستي از محصولات انتخابي توسط خريدار ايجاد نمود . در صورتي كه قصد ذخيره حجم بالائي از اطلاعات نظير يك Dataset را داشته باشيم ، مي بايست در اين رابطه دقت و تاثير آن را بر روي موفقيت برنامه بررسي كرد . به عنوان نمونه ، در صورتي كه هر session فضائي به ميزان يك مگابايت را استفاده نمايد ، يكصد session همزمان باعث استفاده 100 مگابايت از حافظه خواهد شد .
براي حل اين نوع از مشكلات ، در زمان طراحي مي توان بر اساس يكي از دو گزينه هاي زير تصميم گيري نمود :
ذخيره تمامي اطلاعات مورد نياز در يك ركورد بانك اطلاعاتي و ذخيره ID ركورد مورد نظر در يك session . روش فوق باعث صرفه جوئي در مصرف حافظه مي گردد ولي سرعت برنامه را كاهش خواهد داد ( با توجه به فرآيند دستيابي به بانك اطلاعاتي كه يكي از عناصر مهم و تاثيرگذار در خصوص كارآئي برنامه هاي وب است ) .
به عنوان يك راه حل بهتر مي توان اطلاعات مورد نظر را در يك ركورد بانك اطلاعاتي ذخيره و در ادامه برخي از اطلاعات را در حافظه cache نمود . بدين ترتيب ، امكان بازيابي اطلاعات با سرعت بيشتري فراهم مي گردد . در بخش هاي بعدي با data caching بيشتر آشنا خواهيم شد .
بهترين روش و يا گزينه براي ذخيره session ، استفاده از روش in-process است كه به صورت پيش فرض در نظر گرفته مي شود . براي ذخيره session مي توان از روش هاي ديگري نظير يك بانك اطلاعاتي SQL نيز استفاده نمود . استفاده از روش فوق پردازش هاي بيشتري را به سيستم تحميل و صرفا” در مواردي كه وب سايت مورد نظر در يك web farm به همراه چندين سرويس دهنده هاست شده باشد ، توصيه مي گردد .
محور دوم : تست برنامه قبل از عملياتي شدن آن و يا پروفايلنگ ( Profiling )
براي قضاوت در خصوص تلاش هاي انجام شده در ارتباط با بهبود كارآئي يك برنامه وب ، مي بايست قادر به سنجش كارآئي آن در عمل باشيم . در مواردي كه كارآئي يك برنامه كند و نااميد كننده است ، مي بايست بر اساس اطلاعات كافي اقدام به شناسائي گره ها و عوامل تاثير گذار بر روي كارآئي برنامه هاي وب نمائيم تا از اين رهگذر بتوانيم مشكل و يا مشكلات را برطرف و يك برنامه وب كارآ را آماده استفاده عملياتي و نهائي نمائيم .
در بخش سوم به بررسي امكانات و ابزارهاي موجود براي تست برنامه هاي وب خواهيم پرداخت .

افزايش كارآئي برنامه هاي وب در 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
حداكثر توان

دیدگاهتان را بنویسید