IIS Application Pool در پلسک بخشی از سرور وب IIS در ویندوز است که اجازه میدهد سایتها و اپلیکیشنها را به صورت مستقل و در محیطهای ایزوله اجرا کنید. به هر برنامهی کاربردی در IIS میتوان یک Application Pool اختصاص داد که منابع آن مانند حافظه و پردازشها، به طور جداگانه از سایر برنامهها مدیریت شود. این ساختار به بهبود امنیت و پایداری وب سایت کمک میکند.
دلایل معمول کرش کردن IIS Application Pool
- مصرف بیش از حد منابع: زمانی که برنامه بیش از حد منابع سرور (مانند CPU یا RAM) را مصرف کند، Application Pool ممکن است کرش کند. این مشکل میتواند به دلیل کدنویسی ضعیف، حلقههای بیپایان یا بار سنگین روی سایت باشد.
- پیکربندی نادرست: برخی از تنظیمات مانند تعداد اتصالات همزمان یا محدودیتهای حافظه میتواند باعث کرش شود. در پلسک، شما میتوانید تنظیمات Application Pool را برای کاهش فشار روی منابع تغییر دهید.
- نسخههای ناسازگار .NET یا PHP: اگر برنامههایی که از نسخههای مختلف .NET یا PHP استفاده میکنند روی یک Application Pool اجرا شوند، ممکن است ناپایداری رخ دهد.
- تنظیمات بازیابی (Recycle): در تنظیمات Application Pool، بخش Recycle میتواند به صورت خودکار Application Pool را بازیابی کند. اگر این بازیابیها بیش از حد تکرار شوند، ممکن است به کرش منجر شود.
راهکارهای جلوگیری از کرش Application Pool
- افزایش منابع اختصاصی: اگر سرور ظرفیت کافی دارد، میتوانید منابع بیشتری به Application Pool اختصاص دهید. یا از پلن های حرفه ای برای طراحی خود استفاده نمایید.
- بازیابی خودکار (Auto Recycle): در تنظیمات IIS، بخش Recycle را طوری تنظیم کنید که Application Pool در فواصل منظم بازنشانی شود.
- مانیتورینگ حافظه: میتوانید محدودیتهای خاصی برای حافظه تعیین کنید تا زمانی که به یک سطح خاص رسید، Application Pool مجدداً راهاندازی شود.
- تنظیمات .NET و PHP: اطمینان حاصل کنید که برنامهها با نسخههای سازگار از .NET یا PHP در یک Application Pool اجرا میشوند.
برای مدیریت و بهینهسازی بهتر IIS Application Pool، میتوانید از تنظیمات زیر استفاده کنید:
۱. Managed Pipeline Mode
- Integrated: این حالت اجازه میدهد که درخواستها از طریق پردازش یکپارچه ASP.NET و IIS پردازش شوند، که به ویژه برای برنامههایی که نیاز به مدیریت پیشرفته درخواستها و پاسخها دارند، مناسب است.
- Classic: این حالت برای برنامههای قدیمیتر ASP.NET که به سبک ISAPI نیاز دارند استفاده میشود.
۲. Enable 32-bit Applications
- این تنظیم برای اجرای برنامههای 32 بیتی در سیستمعامل 64 بیتی استفاده میشود. زمانی کاربرد دارد که برنامههایی که فقط نسخه 32 بیتی دارند باید روی IIS اجرا شوند.
۳. Load the User Profile
- True/False: اگر نیاز باشد که IIS تنظیمات خاص کاربر مانند رجیستریها یا پروفایلها را برای Application Pool بارگذاری کند، این گزینه به True تنظیم میشود. برای اکثر برنامههای وب نیازی به بارگذاری پروفایل کاربر نیست.
۴. The Maximum Number of Worker Processes
- 1 به این معنی است که تنها یک پردازشگر در آنِ واحد درخواستها را پردازش میکند. با افزایش تعداد Worker Processes میتوان توانایی پردازش همزمان درخواستها را افزایش داد. این تنظیم را به طور معمول روی 1 نگه دارید مگر اینکه با ترافیک سنگینی روبرو باشید.
۵. Idle Timeout
- 5 دقیقه زمان بیکاری است که پس از آن Application Pool متوقف میشود. این گزینه به آزادسازی منابع کمک میکند ولی در صورتی که درخواستها با تأخیر به برنامه برسند، تنظیم مدت زمان طولانیتر ممکن است کارایی بهتری داشته باشد.
۶. Maximum CPU Usage (%)
- در حال حاضر روی 10% تنظیم شده و در صورتی که مصرف CPU از این مقدار تجاوز کند، تنها یک لاگ ایجاد میشود. اگر تمایل دارید که اقدامات بیشتری مانند متوقف کردن Application Pool انجام شود، میتوانید این گزینه را تغییر دهید.
۷. Recycling Settings
- Recycling at Regular Time Intervals: با تنظیم زمانهای بازیابی، مانند 1740 دقیقه، IIS میتواند به طور منظم و بدون توجه به شرایط فعلی Application Pool را مجدداً راهاندازی کند.
- Memory-based Recycling: در شرایط خاص، میتوانید مقدار حداکثر حافظه را برای بازیابی تنظیم کنید. این کار به آزادسازی منابع زمانی که Application Pool بیش از حد حافظه مصرف میکند، کمک میکند.
پیشنهادات بهینهسازی
- بررسی تنظیمات حافظه: میتوانید مقادیر خاصی برای Virtual Memory و Private Memory تعیین کنید تا از کرشهای ناشی از استفاده بیش از حد منابع جلوگیری شود.
- افزایش مدت Idle Timeout: در صورت بالا بودن میزان بیکاری، این زمان را به مقدار بیشتری افزایش دهید.
- افزایش Maximum CPU Usage: این مقدار را متناسب با میزان ترافیک سایت و منابع سرور تنظیم کنید.
- در صورتیکه در فواصل زمانی کوتاه کرش اتفاق می افتد می توانید کد خود را بهینه سازی کنید و یا از سرور اختصاصی بجای هاست اشتراکی استفاده کنید.
این تنظیمات به بهینهسازی Application Pool و عملکرد بهتر وبسایت کمک میکند.