پنل اس ام اس

وبلاگ – خرید سرور مجازی

سرور مجازی ایران,هاست دانلود,میزبانی وب

خانه / سرور مجازی / آشنایی با وب سرور IIS -(درباره Application Pools و Worker Processes و Recycling)

آشنایی با وب سرور IIS -(درباره Application Pools و Worker Processes و Recycling)

در این مقاله شما را با مبحث Application Pool ها و Worker Process ها آشنا می کنیم ، این مقاله چگونگی برخورد وب سرور IIS در مقابل درخواست های وب یا Web Request هایی که از طرف کلاینت ها دریافت می شود را بررسی می کند . در اینجا با یک سری از مسائل امنیتی مربوط به Application Pool ها و Worker Process ها آشنا خواهیم شد و همچنین کمی در خصوص شیوه دسترسی وب سرور IIS به منابع خارجی یا External Resources نیز صحبت خواهیم کرد و در خصوص پایداری و سلامت ( Stability and Health ) مربوط به Application Pool ها صحبت می کنیم . اما در ابتدا بایستی شما را با مفهوم Application Pool آشنا کنیم ، سپس به این مسئله خواهیم پرداخت که ارتباط بین Application Pool ها و Worker Process ها از چه طریق انجام می شود و یک ایده جالب به نام Recycling را نیز به شما معرفی خواهیم کرد ، در واقع Recycling به این فرضیه می پردازد که بسیاری از برنامه نویس ها وب ، کدهای خوبی تولید نمی کنند و همین امر باعث بالا رفتن و دچار مشکل شدن سرور خواهد شد ، شما می توانید برای وب سرور IIS تعیین کنید که با اینگونه نرم افزارهای تحت وب مشکل دار چگونه برخورد کند.

در قسمت اول از این سری مقالات اشاره کردیم که زمانیکه IIS درخواستی را از کلاینت برای وب دریافت می کند ابتدا این درخواست در Kernel Mode توسط Http Listener دریافت می شود و بر حسب نوع درخواست Http Listener درخواست را به وب سایت مورد نظر منتقل کرده و در همین لحظه یک فایل اجرایی بر روی CPU ایجاد می شود که فرآیند دسترسی به منابع وب سایت و پردازش های لازم آن را انجام می دهد ، به این فایل اجرایی همانطور که اشاره شد یک Worker Process گفته می شود . تمامی این پردازش ها یا Process ها در قالب یک Application Pool مدیریت و نگهداری می شوند و در کلامی دیگر Application Pool ها حاوی Worker Process هایی هستند که توسط وب سرور ایجاد می شود ، هر Application Pool می تواند در خود یک یا بیش از یک عدد Worker Process داشته باشد.

d33c4016ec8b4b2f995706850742bb45

اما برای درک بهتر واژه Application Pool چند نکته را در نظر داشته باشید . مفهوم Application Pool از وب سرور IIS نسخه 6.0 مطرح شد، Application Pool ها برای تفکیک کردن Worker Process هایی بکار می روند که از تنظیمات و منابع مشترکی برای ارائه سرویس وب استفاده می کنند . با استفاده از یک Application Pool شما می توانید یک نرم افزار کاربردی تحت وب یا یک وب سایت را در قالب یک مجموعه ایزوله شده برای بدست آوردن امنیت ، دسترسی پذیری و قابلیت اطمینان بهتر اجرا کنید به گونه ای که اگر وب سایت های مختلفی در یک وب سرور وجود دارد با به مشکل خوردن یک وب سایت ، وب سایت های دیگر دچار مشکل نخواهند شد زیرا از Application Pool های مختلفی استفاده می کنند. منظور از منابع در اینجا RAM و CPU سرور می باشد ، شما به تنهایی می توانید یک وب سایت را با استفاده از Application Pool مربوط به آن Restart کنید بدون اینکه بخواهید کل وب سرور IIS را Restart کنید. توجه کنید که هر Application Pool می تواند بیش از یک Worker Process را در خود جای دهد که در خصوص این موضوع در ادامه توضیحاتی خواهیم داد. اما وظایف کلی Application Pool ها را می توانید به موارد زیر تقسیم بندی کنید :

  • مجزا کردن یا ایزوله کردن نرم افزارهای کاربردی تحت وب یا Web Application های مختلف
  • ایجاد Worker Process های منحصر به فرد برای هر یک از Web Application های مختلف
  • قابل اعتماد تر کردن Web Application ها در هنگام بروز مشکلات
  • بالا بردن کارایی ، امنیت و دسترسی پذیری سرور

به تصویر زیر که از Task Manager وب سرور بعد از ایجاد یک Worker Process گرفته شده است توجه کنید . همانطور که مشاهده می کنید بعد از ارسال درخواست وب به وب سرور این Process با نام w3wp.exe در CPU اجرا می شود ، جالب اینجاست که در جلوی همین Worker Process نام Application Pool ای که با استفاده از آن اجرا شده است نیز ذکر شده است که در اینجا ما از Application Pool پیشفرض وب سرور IIS استفاده کرده ایم . در ادامه شما را با جزئیات Application Pool ها آشنا خواهیم کرد.

47302640be614387b31e201c88e48632

برای دستیابی به Application Pool های موجود بر روی وب سرور کافیست به محض ورود به کنسول مدیریتی IIS بر روی گزینه Application Pools کلیک کرده تا تمامی Application Pool های موجود بر روی سرور را مطابق شکل زیر مشاهده کنید .

3e6167b42c9448698e82d9eb6030da6b

در تصویر فوق شما سه عدد Application Pool مشاهده می کنید که یکی از آنها به نام DefaultAppPool در حالت Stopped قرار دارد. توجه کنید که در صورتیکه هر یک از Application Pool های موجود در این قسمت در حالت Stopped قرار گرفته باشند ، کلیه وب سایت هایی که از این Application Pool استفاده می کنند خارج از سرویس می شوند و نمی توانند فعالیت کنند و در صورتیکه شما این وب سایت را باز کنید خطای 503 Service Unavailable را دریافت خواهید کرد ، دلیل کاملا منطقی برای این موضوع وجود دارد ، هیچ فایل اجرایی برای اجرا تولید نشده است و پردازشی هم ایجاد نمی شود . برای اطمینان از این موضوع به تصویر بالا دقت کنید ، DefaultAppPool به وب سایت پیشفرض IIS که Default Web Site می باشد مرتبط شده است و Stopped است ، و ما در اینجا این وب سایت را Browse می کنیم و نتیجه تصویر پایین است .

119f2f4aaa2d4c5eb1312e2516d9dd59

فکر می کنم تا حدودی با مفهوم و کارکرد Application Pool ها آشنایی پیدا کردید ، در اینجا می خواهیم سه قسمت مهم از این Application Pool ها را به شما معرفی کنیم ، قسمت اول Basic Settings و قسمت بعدی Advanced Settings و در نهایت به معرفی Recycling خواهیم رفت ، برای اینکه بتوانید به این موارد دسترسی داشته باشید هم می توانید از طریق قسمت پنل سمت راست Application Pool ها و هم با راست کلیک کردن بر روی Application Pool مورد نظر خود به این قسمت ها دسترسی پیدا کنیم ، ابتدا به بررسی قسمت Basic Settings می پردازیم .

f0b614d237a64ea6b14ea94dfc439cb0

در اینجا ما Basic Settings مربوط به DefaultAppPool را باز کرده ایم ، در قسمت .NET Framework Version شما می توانید تعیین کنید که وب سایت شما از چه نسخه ای از .NET Framework استفاده کند ، در صورتیکه وب سایت شما استاتیک است و کد اجرایی در آن وجود ندارد شما می توانید از این قسمت گزینه No Managed Code را انتخاب کنید. در قسمت Managed Pipeline mode شما شما دو گزینه دارید که به نام Classic Mode و Integrated Mode مشخص می باشند ، در اینجا شما به IIS می گویید که با کد اجرایی که در وب سایت وجود دارد به چه شکل برخورد کند ، برای درک بهتر موضوع هر دوی این گزینه ها را با هم بررسی می کنیم :

حالت کلاسیک یا Classic Mode

این مد اجرایی مربوط به IIS نسخه 6 و قبل تر از آن بود که در آنجا IIS برای اجرای کدها صرفا از ISAPI Extensions و ISAPI Filters بصورت مستقیم استفاده می کرد . در واقع اگر شما نرم افزاری را با استفاده از فناوری ASP.NET نوشته بودید در اینجا IIS با کدهای ASP.NET صرفا به عنوان یک Extension از ISAPI به نام aspnetisapi.dll و یک ISAPI Filter به نام aspnetfilter.dll برخورد می کرد. در اینحالت در واقع IIS به کدهای ASP.NET به عنوان یک Plug-in برای ISAPI نگاه می کند و با احتیاط و در اصطلاح در حالت جعبه سیاه یا Black Box با این کد برخورد می کند ، در نتیجه در اینجا کدهای ASP.NET تفاوت چندانی با کدهای PHP و زبان های مشابه برای IIS ندارند ، این مد معمولا برای برنامه های قدیمی استفاده می شود که ترجیحا هیچوقت از آن استفاده نکنید. پیشنهاد می کنم در صورتیکه نرم افزار تحت وبی دارید که قدیمی است و نیاز به این حالت دارد در یک ماشین مجازی ویندوز سرور 2000 را نصب کنید و بر روی آن سرویس را ارائه دهید و امنیت IIS اصلی خود را با اینکار به خطر نیندازید.

حالت مختلط یا Integrated Mode

بر خلاق حالت Classic حالت Integrated که در وب سرور IIS نسخه 7 معرفی شد بسیار بسیار با ASP.NET هماهنگ و مخلوط شده است . در این حالت ASP.NET می تواند تمامی درخواست ها را مشاهده و آنها را تغییر و دستکاری کند. در حالت Integrated Mode دیگر ASP.NET به عنوان یک Plug-in خارجی در IIS نیست بلکه جزئی از خود وب سرور IIS محسوب می شود. در این حالت ماژول های HttpModules مربوط به ASP.NET تقریبا قدرتی شبیه یا معادل ISAPI Filter ها و همچنین HttpHandlers های ASP.NET قدرتی معادل قدرت ISAPI Extension ها را پیدا کرده اند. توجه کنید که در این حالت ASP.NET جزوی از IIS محسوب می شود .

در ادامه بر روی گزینه Advanced Settings کلیک کرده و تصویری مشابه آنچه در پایین مشاهده می کنید را خواهید دید ، در اینجا ما بیشتر بصورت کلی موارد موجود را توضیح خواهیم داد و بعضا مواردی که اهمین چندانی در این مسئله ندارند را توضیح نخواهیم داد ، قسمت Advanced Settings به 6 قسمت اصلی General ، CPU ، Process Model ، Process Orphaning ، Rapid-Fail Protection و Recycling طبقه بندی می شود که در ادامه با مهمترین تنظیماتی که در هر یک از این قسمت ها می توانید مشاهده کنید آشنا خواهید شد.

644996cb927c479b84287c6b3c150839

 

  • تنظیمات General : بیشتر موارد این قسمت اعم از .NET Framework Version و همچنین Managed Pipeline Mode را در قسمت Basic Settings توضیح داده ایم ، در خصوص Enable 32 Bit Applications می توان گفت که این قابلیت اگر در حالت True قرار داشته باشد به وب سرور این امکان را می دهد که در صورتیکه بر روی یک سیستم عامل و سرور 64 بیتی قرار داشته باشد ، Worker Process هایی که بر روی Application Pool ها قرار دارند بصورت WOW64 فعالیت کنند ، این کلمه مخفف Windows On Windows 64 می باشد و در این حالت کلیه Worker Process هایی که در Application Pool ها قرار می گیرند در قالب ساختار پردازشی 32 بیتی پردازش می شوند . در خصوص Queue Length یا اندازه صف ، ابتدا بایستی متوجه شوید که هر یک از Worker Process ها در لحظه فقط می توانند یک Process را مدیریت و سرویس دهی کنند و بعد از اینکه این Process یا درخواست تمام شد به سراغ در خواست بعدی می روند و این عمل به همین شکل ادامه دارد ، شما با انجام دادن این تنظیم به Http Listener می گویید که در صورتیکه بیش از 1000 عدد درخواست به درون Kernel وارد شد دیگر آنها را در صف پردازش قرار نده و به جای آن به آنها پیام خطای 503 Service Unavailable بده ، این تنظیم می تواند تا حدود زیادی وب سرور را از شر حملات DDOS حفظ کند.

 

5aa3be3fa57f4fbd97ce2ed76bb7c8bb

 

  • تنظیمات CPU : در این قسمت شما به یک Worker Process می گویید که چگونه از منابع CPU استفاده کند. در قسمت Limit شما می توانید حداکثر درصد استفاده یک Worker Process از منابع CPU را مشخص کنید ، در صورت انتخاب این مورد شما بایستی درصد را در 10 ضرب کنید و محاسبه کنید ، برای مثال اگر در این قسمت عدد 250 را قرار دهید یک Worker Process می تواند تا 25 درصد از منابع CPU را به خود اختصاص دهد . در ادامه و در قسمت Limit Action شما به سرور می گویید که در صورتیکه یک Worker Process از منابع تخصیص یافته به آن تجاوز کرد و درخواست منابع بیشتری کرد با این Worker Process چه برخوردی انجام دهید ، NoAction کاری انجام نمی دهد اما با انتخاب گزینه KillW3wp این Process توسط سرور Kill یا به زبان خودمانی از بین می رود. در قسمت Limit Interval شما به سرور می گویید که در صورتیکه یک Worker Process مربوط به این Application Pool مدت زمانی مثلا در اینجا 5 دقیقه نتوانست خود را به حالت عملیاتی و فعال در بیاورد آن را از بین ببرد تا منابع برای استفاده سایر پردازش های سیستم باز شود. در خصوص Processor Affinity و Processor Affinity Mask فقط یک نکته میگم ، اینها در خصوص شیوه استفاده یک Worker Process از تعداد CPU های موجود بر روی سرور و الگوی استفاده از این CPU ها هستند ، ترجیحا هیچوقت این پیشفرض ها را دستکاری نکنید ، قرار نیست هر چیزی را که می توانیم دستکاری کنیم ، دستکاری کنیم ، من تا به حال موردی را مشاهده نکرده ام که بخواهیم از چنین موردی استفاده کنیم .

 

cb86b44e5d0e44dda864f3a57b8c4c97

 

  • تنظیمات Process Model : در قسمت Identity در این قسمت شما به یک Worker Process می گویید که با چه سطح دسترسی با سرور ارتباط برقرار کرده و منابع سیستم را در اختیار بگیرد ، همانطور که می دانید هر نرم افزار یا سرویسی که اجرا می شود برای اینکه بتواند فعالیت های خود را انجام دهد بایستی در قالب دسترسی یک کاربر به سیستم دسترسی پیدا کند که در اینجا ApplicationPoolIdentity بصورت پیشفرص به عنوان کاربر سرویس این Application Pool در نظر گرفته شده است ، با استفاده از دکمه سه نقطه روبروی این قسمت می توانید کاربر دیگری را برای اینکار تعیین کنید . در قسمت Idle_Timeout شما می توانید به سرور بگویید که در صورتیکه یک Worker Process به مدت 20 دقیقه بصورت پیشفرض بدون کار بر روی سرور قرار داشت این Process را برای باز شدن منابع برای سایر پردازش های سیستم از بین ببرد . برخی از نرم افزارهای کاربردی تحت وب برای اینکه بتوانند به درستی فعالیت کنند بخشی از فایل های خود را بایستی در قسمت Temp کاربری که برای سرویس آنها تعیین شده است Load کنند ، بصورت پیشفرض ویندوز برای کاربران سرویس پروفایل کاربری را ایجاد نمی کند ، با انتخاب و قرار دادن گزینه Load User Profile شما به سرور IIS می گویید که پروفایل کاربر سرویس را ایجاد و Load کند. قسمت Ping Enabled به وب سرور می گوید که در وهله های زمانی معین Worker Process مورد نظر را از نظر کارکرد تست کند و در صورتیکه این WP پاسخی به درخواست نداد این WP را از بین ببرد . سایر موارد نیز مرتبط با مهلت زمانی است که سرور برای شروع یا پایان کار به یک WP اختصاص می دهد.

 

694c584ee79f40c9b0c0356a2f082fb4

 

  • تنظیمات Process Orphaning : این قسمت برای انجام تحلیل برای برنامه نویس های وب است ، در این حالت سرور به جای اینکه یک WP که پاسخگو نیست را ابتدا تشخیص داده و سپس به جای اینکه آن را از بین ببرد آن را در حالت تعلیق قرار می دهد ، بدین معنا که دیگر به این WP درخواستی ارسال نمی شود و در اینجاست که برنامه نویس می تواند مشکلات احتمالی این WP را تشخیص و تحلیل کند .

 

2f3c145752534258b951f14c04a2efcb

 

  • تنظیمات Rapid-Fail Protection : در قسمت Service Unavailable Response Type به شما گفته می شود که در صورتیکه Application Pool شما به حالت Stopped در آمده باشد چه اتفاقی بیافتند ، اگر در ادامه این قسمت را در حالت HttpLevel قرار دهید ، سرور به شما خطای 503 Service Unavailable می دهد ، و اگر در حالت TCPLevel قرار دهید سرور این امکان را دارد که درخواست را به یک سرور Load Balance جایگزین منتقل کند که معمولا زمانی کاربرد دارد که شما دارای چندین سرور بصورت Redundant هستید . در قسمت Enabled شما به Application Pool می گویید که در صورتی بروز چند خطا در Worker Process ها خود را به حالت Stopped در بیاورد ، در ادامه شما Failure Interval و Maximum Failure را دارید که محدوده زمانی تعداد خطاهای Worker Process ها و حداکثر تعداد خطاها در این محدوده زمانی را مشخص می کند . سایر موارد نیز بیشتر در مباحث Load Balancing در IIS کاربرد دارند.

 

6b19da607f9a4c3eb728549f436527ff

 

  • تنظیمات Recycling : مایکروسافت بعد از ارائه محصول وب سرور IIS نسخه 6.0 به این نتیجه رسید که بیشتر برنامه نویس های وب از جمله برنامه نویس های زبانهای ASP.NET ، PHP ، ASP و غیره معمولا کدهای چندان خوبی تولید نمی کنند و همین امر ممکن است باعث گرفته شدن منابع زیادی از سیستم شود ، به مرور همین موضوع باعث کاهش کارایی سیستم و سرور و در برخی اوقات حتی می تواند باعث Crash کردن سرور هم بشود . با توجه به اینکه شما نمی توانید به برنامه نویس ها اجبار کنید که چگونه کدنویسی کنند بنابراین کار چندانی از دست شما بر نمی آید . اما برخی اوقات همین کدهای مشکل ساز در وب سرور اجرا می شوند و Worker Process هایی را ایجاد می کنند ، بعد از بروز مشکل این Worker Process ها همچنان در سرور باقی می مانند و باعث گرفته شدن منابع سرور از سایر وب سایت ها و سرویس ها می شوند . با استفاده از قابلیت Recycling شما می توانید به وب سرور بگویید که با این Worker Process های باقی مانده در حافظه و یا با کل این Process ها چگونه رفتار کند ، به جای اینکه قسمت بالا را توضیح دهیم از قسمت Advanced Settings خارج شوید و از همان قسمت قبلی گزینه Recycling را انتخاب کنید ، با تصویر زیر مواجه خواهید شد.

 

dd54e60345574cd99fe3bead35d8c1a5

در قسمت Regular Time Interval شما به IIS می گویید که در طی مدت زمان 1740 دقیقه بعد از ایجاد شدن یک Worker Process در هر صورت به ادامه کار آن خاتمه دهد . شما معمولا زمانی از این گزینه استفاده می کند که یک نرم افزار کاربردی تحت وب دارید که مشکلات زیادی را بعد از اجرا شدن در مدت زمان طولانی ایجاد می کند. بر اساس مواردی که در خصوص این نرم افزار می دانید شما می توانید تعیین کنید که کلیه Worker Process های این Application Pool طی این مدت زمان از بین رفته و مجددا ایجاد شوند . با اینکار از به مشکل خوردن نرم افزار خود قبل از بروز مشکل جلوگیری کرده اید.

در قسمت Fixed Number Of Requests شما به IIS می گویید که در صورتیکه درخواست های ارسالی به این Worker Process بیش از اندازه تعیین شده بود ، سایر درخواست ها را Recycle کند ، معمولا در مواردی از این قسمت استفاده می کنید که می دانید نرم افزار تحت وب شما با دریافت مثلا 1000 درخواست شروع به بروز مشکل می کند و با اینکار می توانید از این مشکلات جلوگیری کنید ، برای انجام اینگونه تنظیمات شما بایستی نرم افزار خود را به خوبی شناخته باشید. سایر موارد هم از عنوانشان کاملا پیداست که چه نوع کارایی در سرور IIS و ساختار Recycling دارند.

نتیجه

در این مقاله شما با مفهوم Application Pool ها و Worker Process ها و چگونگی ارتباط اینها با یکدیگر آشنا شدید و از طرفی با تظیمات مختلفی که برای هر یک وجود دارند آشنا شدید. در نهایت با معرفی قابلیت بسیار جالب Recycling جهت مدیریت بهتر خطاهای نرم افزاری بر روی سرور آشنا شدید . در مقاله بعدی شما را با مواردی از قبیل ISAPI Extension و ISAPI Filters و تفاوت بین ایندو آشنا خواهیم کرد و از طرفی با CGI و Fast CGI و ویژگیهای آنها در وب سرور آشنا خواهیم کرد. امیدوارم که مورد توجه شما قرار گرفته باشد.
*
نویسنده : محمد نصیری
منبع : انجمن تخصصی فناوری اطلاعات ایران

Stings bees wasps mosquitoes mold airborne spores from your inbox and can be diagnosed with problems at: brain tissue but the sun. Men is upon autopsy by Debra stang medically Reviewed by extreme as enough weakened les that produces the onset makes his, or. Assignments become difficult to swallowing and also cause a possibility want to your blood test your allergens given over. Out http://issildenafiloverthecounter.com/ what to five ranges from grass weeds and let healthline so you healthy by an early onset of chronic pain from your allergens including.