اگر مدیر سرور یا توسعهدهندهای هستید که با وبسرور IIS (Internet Information Services) کار میکنید، احتمالاً با مفهوم Application Pool یا همان استخر برنامه آشنا هستید. این قابلیت کلیدی در IIS به شما امکان میدهد تا برنامههای وب را به شکلی ایزوله و کارآمد مدیریت کنید. تنظیمات Application Pool میتواند عملکرد سرور را بهبود ببخشد، امنیت را افزایش دهد و از خرابیهای غیرمنتظره جلوگیری کند. در این مقاله، به شما توضیح میدهیم که Application Pool چیست، چرا مهم است و چگونه میتوانید تنظیمات آن را به صورت کاربردی پیکربندی کنید.
برای اطلاعات پایه در مورد نصب و راهاندازی IIS، میتوانید به مقاله آموزش گامبهگام نصب و پیکربندی وبسرور IIS در ویندوز سرور 2022 مراجعه کنید. حالا بیایید وارد دنیای Application Poolها شویم!
Application Pool چیست؟
تصور کنید سرور شما یک آشپزخانه بزرگ است که چندین سرآشپز (وبسایت) در آن مشغول پختوپز هستند. اگر همه سرآشپزها از یک اجاق و وسایل مشترک استفاده کنند، ممکن است اوضاع بههمریخته شود و اشتباه یک نفر، کل آشپزخانه را به هم بریزد. Application Pool مثل اختصاص دادن یک اجاق و فضای جداگانه به هر سرآشپز است. در IIS، هر Application Pool یک محیط ایزوله برای اجرای یک یا چند وبسایت فراهم میکند. این محیط شامل یک فرآیند کارگر (Worker Process) است که در Task Manager ویندوز به صورت فایل اجرایی w3wp.exe دیده میشود.
این ایزولاسیون باعث میشود که اگر یک برنامه وب دچار مشکل شود (مثلاً کرش کند یا حافظه زیادی مصرف کند)، سایر برنامهها یا کل سرور تحت تأثیر قرار نگیرند. این ویژگی بهخصوص در سرورهای میزبانی اشتراکی که چندین وبسایت روی یک سرور اجرا میشوند، بسیار کاربردی است.
مزایای Application Pool
استفاده از Application Poolها در IIS مزایای زیادی دارد که در ادامه به مهمترین آنها اشاره میکنیم:
- ایزولاسیون: اگر یک وبسایت با مشکل مواجه شود، سایر وبسایتها همچنان به کار خود ادامه میدهند.
- مدیریت منابع: میتوانید برای هر Application Pool محدودیتهایی برای CPU، حافظه یا پهنای باند تنظیم کنید تا سرور شما بیش از حد تحت فشار قرار نگیرد.
- امنیت بالاتر: هر Application Pool میتواند با یک حساب کاربری خاص اجرا شود، که این کار دسترسیهای غیرمجاز را محدود میکند.
- انعطافپذیری: امکان تنظیم نسخههای مختلف داتنت، بازیافت خودکار و سایر پیکربندیها برای هر Application Pool وجود دارد.
- مقیاسپذیری: برای برنامههای پرترافیک، میتوانید چندین Worker Process را به یک Application Pool اختصاص دهید.
مدلهای مختلف Application Pool
Application Poolها به دو نوع اصلی اشتراکی و اختصاصی تقسیم میشوند. انتخاب مدل مناسب به نیازهای وبسایت و منابع سرور شما بستگی دارد.
Application Pool اشتراکی
در این مدل، چندین وبسایت یا برنامه وب از یک Application Pool مشترک استفاده میکنند.
مزایا:
- مصرف کمتر منابع سرور، چون همه وبسایتها از یک Worker Process استفاده میکنند.
- مدیریت آسانتر، چون تعداد Application Poolها کمتر است.
معایب:
- اگر یکی از وبسایتها مشکلی داشته باشد (مثلاً حافظه زیادی مصرف کند)، ممکن است عملکرد سایر وبسایتها هم مختل شود.
- امکان سفارشیسازی تنظیمات برای هر وبسایت محدود است.
Application Pool اختصاصی
در این مدل، هر وبسایت یا برنامه وب در یک Application Pool مجزا اجرا میشود.
مزایا:
- ایزولاسیون کامل، یعنی مشکلات یک وبسایت روی دیگران تأثیر نمیگذارد.
- امکان تنظیمات سفارشی مثل نسخه داتنت، محدودیتهای منابع و بازیافت.
معایب:
- مصرف بیشتر منابع سرور، چون هر Application Pool یک فرآیند کارگر جداگانه دارد.
- نیاز به مدیریت بیشتری برای پیکربندی هر Application Pool.
چطور تنظیمات Application Pool را تغییر دهیم؟
برای اعمال تغییرات روی یک Application Pool، کافی است وارد کنسول مدیریتی IIS شوید.
از پنل سمت چپ، روی گزینه Application Pools کلیک کنید تا لیست اپلیکیشن پولها را ببینید.

سپس روی Application Pool مورد نظر راستکلیک کرده و گزینههایی مانند Advanced Settings، Recycling یا Basic Settings را انتخاب کنید.
در پنجرههای بازشده میتوانید تنظیمات مختلفی از جمله نسخه داتنت، هویت اجرایی، محدودیت منابع (CPU و حافظه)، زمانبندی بازیافت یا تعداد Worker Processها را بهراحتی و بهصورت سفارشی تغییر دهید.
نکته : پس از اعمال تغییرات، معمولاً لازم است Application Pool را یکبار Stop و سپس Start کنید تا تنظیمات جدید اعمال شوند. |
تنظیمات Application Pool
حالا که با مفهوم و مزایای Application Pool آشنا شدیم، بیایید به سراغ تنظیمات عملی آن برویم. در IIS، میتوانید تنظیمات مختلفی را برای هر Application Pool اعمال کنید.
تنظیم هویت (Identity)
هویت Application Pool مشخص میکند که Worker Process تحت چه حساب کاربری ویندوزی اجرا میشود. این تنظیم برای امنیت و دسترسی به منابع سیستمی مهم است.
سایر تنظیمات رایج Application Pool:
- ApplicationPoolIdentity: یک حساب کاربری مجازی که به صورت خودکار برای هر Application Pool ایجاد میشود. این گزینه امنترین انتخاب است.
- NetworkService: یک حساب سیستمی با دسترسی محدود.
- Custom Account: میتوانید یک حساب کاربری خاص (مثلاً یک حساب Active Directory) را مشخص کنید.
نحوه تنظیم ApplicationPoolIdentity :
- در IIS Manager، به بخش Application Pools بروید.
- روی Application Pool مورد نظر راستکلیک کنید و Advanced Settings را انتخاب کنید.
- در بخش Process Model، روی Identity کلیک کنید و گزینه مورد نظر را انتخاب کنید.

- اگر از حساب کاربری سفارشی استفاده میکنید، نام کاربری و رمز عبور را وارد کنید.
تنظیم بازیافت (Recycling)
بازیافت به معنای خاتمه دادن و راهاندازی مجددWorker Process است. این کار برای جلوگیری از مشکلات ناشی از نشت حافظه (Memory Leak) یا مصرف بیش از حد منابع انجام میشود.
گزینههای مهم بازیافت:
- Regular Time Interval: بازیافت در بازههای زمانی مشخص (مثلاً هر 1740 دقیقه یا 29 ساعت).
- Private Memory Limit: بازیافت وقتی مصرف حافظه خصوصی از یک مقدار خاص (مثلاً 500 مگابایت) فراتر رود.
- Request Limit: بازیافت پس از دریافت تعداد مشخصی درخواست HTTP.
مثال کاربردی: اگر وبسایتی دارید که گاهی اوقات به دلیل نشت حافظه کند میشود، میتوانید بازیافت را طوری تنظیم کنید که هر 24 ساعت یا وقتی حافظه به 1 گیگابایت رسید، انجام شود.
نحوه تنظیم Recycling:
- در IIS Manager، روی Application Pool کلیک راست کرده و Recycling را انتخاب کنید.

- در پنجره باز شده، گزینههایی مثل Regular Time Interval یا Private Memory Limit را فعال کنید.
- مقادیر مورد نظر را وارد کنید (مثلاً 1440 برای 24 ساعت یا 1000000 کیلوبایت برای 1 گیگابایت حافظه).

نسخه داتنت (برای برنامههای ASP.NET)
اگر وبسایت شما از فریمورک ASP.NET استفاده میکند، باید نسخه مناسب داتنت را برای Application Pool تنظیم کنید. مثلاً، یک وبسایت ممکن است به .NET Framework 4.8 یا .NET Core 6 نیاز داشته باشد.
نحوه تنظیم نسخه داتنت:
- در IIS Manager، روی Application Pool کلیک راست کرده و Basic Settings را انتخاب کنید.
- در بخش .NET CLR Version، نسخه مورد نظر را انتخاب کنید (مثلاً v4.0 برای .NET Framework 4.x).
- اگر از .NET Core استفاده میکنید، گزینه No Managed Code را انتخاب کنید، چون .NET Core به صورت مستقل اجرا میشود.
نحوه محدود کردن مصرف CPU در IIS برای یک Application Pool
یکی از تنظیمات مهم برای مدیریت منابع سرور، محدود کردن مصرف CPU توسط یک Application Pool است. این کار به خصوص در سرورهای اشتراکی که چندین وبسایت اجرا میشوند، از بار بیش از حد روی سرور جلوگیری میکند.
نحوه تنظیم محدودیت CPU:
- در IIS Manager، به بخش Application Pools بروید.
- روی Application Pool مورد نظر راستکلیک کرده و Advanced Settings را انتخاب کنید.
- در بخش CPU، گزینه Limit را پیدا کنید و مقدار آن را به درصد مورد نظر تنظیم کنید (مثلاً 20% برای محدود کردن به 20 درصد از CPU).
- در بخش Limit Action، میتوانید انتخاب کنید که در صورت تجاوز از حد مجاز، فرآیند کارگر خاتمه یابد (Kill) یا فقط هشدار ثبت شود (NoAction).
مثال کاربردی: فرض کنید یک وبسایت پرترافیک دارید که گاهی اوقات بیش از 50 درصد CPU را مصرف میکند و باعث کندی سایر وبسایتها میشود. میتوانید محدودیت CPU را روی 30 درصد تنظیم کنید تا سرور همیشه برای سایر وبسایتها منابع کافی داشته باشد.
5. تنظیمات پیشرفته دیگر
- Maximum Worker Processes: برای وبسایتهای پرترافیک، میتوانید تعداد Worker Processes را افزایش دهید (Web Garden). مثلاً تنظیم روی 2 باعث میشود دو فرآیند w3wp.exe برای همان Application Pool اجرا شوند.
- Idle Timeout: اگر Application Pool برای مدت مشخصی (مثلاً 20 دقیقه) فعالیتی نداشته باشد، متوقف میشود تا منابع آزاد شوند.
- Rapid-Fail Protection: اگر Application Pool چندین بار در مدت کوتاهی کرش کند، IIS آن را غیرفعال میکند تا سرور آسیب نبیند.
مثال کاربردی: اگر وبسایتی دارید که فقط در ساعات خاصی از روز بازدید بالایی دارد، میتوانید Idle Timeout را روی 10 دقیقه تنظیم کنید تا در زمانهای کمترافیک، منابع سرور آزاد شوند.
نتیجهگیری
Application Poolها یکی از قدرتمندترین ابزارهای IIS برای مدیریت برنامههای وب هستند. با استفاده از تنظیمات Application Pool بطور مناسب، میتوانید عملکرد، امنیت و پایداری سرور خود را به طور قابل توجهی بهبود دهید. از تنظیم هویت و بازیافت گرفته تا محدود کردن مصرف CPU و انتخاب نسخه داتنت، هر کدام از این تنظیمات میتوانند به شما کمک کنند تا سروری کارآمدتر و قابل اعتمادتر داشته باشید. با صرف زمان برای پیکربندی درست Application Poolها، میتوانید تجربه بهتری برای کاربران وبسایتهای خود فراهم کنید و از مشکلات احتمالی جلوگیری کنید.
منبع: [tecadmin.net]
سوالات متداول
آیا هر وبسایت باید Application Pool جداگانه داشته باشد؟
خیر، اما برای وبسایتهای پرترافیک یا حساس، استفاده از Application Pool اختصاصی توصیه میشود تا ایزولاسیون و پایداری بیشتری داشته باشید.
بازیافت Application Pool چه تأثیری روی کاربران دارد؟
بازیافت معمولاً در کسری از ثانیه انجام میشود و کاربران متوجه آن نمیشوند، اما در وبسایتهای پرترافیک، بهتر است بازیافت در ساعات کمترافیک انجام شود.
چگونه میتوانم بفهمم کدام Application Pool بیش از حد CPU مصرف میکند؟
از Task Manager یا Resource Monitor در ویندوز استفاده کنید و فرآیندهای w3wp.exe را بررسی کنید. همچنین، میتوانید از ابزارهای مانیتورینگ مانند Performance Monitor استفاده کنید.
آیا میتوانم برای هر Application Pool پورت متفاوتی تنظیم کنم؟
خیر، پورتها در سطح وبسایت تنظیم میشوند، نه Application Pool. اما میتوانید با تنظیمات Binding در IIS، پورتهای متفاوتی را به وبسایتهای مختلف اختصاص دهید.
چه زمانی باید از Web Garden استفاده کنم؟
اگر وبسایت شما ترافیک بسیار بالایی دارد و سرور شما منابع کافی (مثلاً CPU و RAM) دارد، استفاده از چندین فرآیند کارگر (Web Garden) میتواند عملکرد را بهبود دهد.
s
این پست چقدر مفید بود؟
برای رتبه بندی روی یک ستاره کلیک کنید!
میانگین رتبه 0 / 5. تعداد آرا: 0
تاکنون هیچ رایی به دست نیامده است! اولین نفری باشید که این پست را رتبه بندی می کند.