هاست و دامنه

محدود کردن میزان حافظه مصرفی توسط Application Pool

فرایند کارگر یا Worker Process | مراحل بررسی و محدود کردن حافظه مصرفی

محدود کردن میزان حافظه مصرفی توسط Application Pool

 

مقدمه

همانطور که می دانید شرکت های ارائه دهنده هاستینگ در خصوص استفاده از انواع هاست به کاربران خود خدماتی ارائه می‌ دهند. زمانی که بنا به دلایل متعدد مشکلی برای یکی از سایت هایی که روی یک سرور قرار دارد، به وجود آید، شاید به این فکر کنیم که باقی سایت ها هم باید دچار مشکلاتی شوند. برای اینکه بتوان به راحتی این مسئله را برطرف کرد شرکت مایکروسافت با استفاده از یکی از ابزارهای سرور IIS تحت عنوان Application Pool توانسته بر این مشکل فائق آید.

شاید بهتر باشد اول Worker Process را برای شما همراهان تلاش‌ نت توضیح دهیم بعد به سراغ Application Pool و نحوه محدود کردن میزان حافظه مصرفی آن برویم. پس با ما همراه باشید…

 

فرایند کارگر یا Worker Process چیست؟

اجرای اپلیکیشن ASP.NET در IIS توسط Worker Process (w3wp.exe) صورت می گیرد. ورکر پراسس مسئول مدیریت تمامی درخواست های دریافتی و پاسخ های ارسالی به سیستم کلاینت می باشد. تمامی قابلیت های ASP.NET تحت قلمرو (حوزه) Worker Process به اجرا در می آیند.

وقتی درخواستی از سمت سیستم کلاینت به وب سرور در هاست می رسد، Worker Process مسئولیت ایجاد درخواست و پاسخ دهی به آن را به عهده می گیرد. به زبان ساده تر Worker Process قلب وب اپلیکیشن ASP.NET می باشد که در IIS اجرا می شود.

راهنمای نصب سریع پرستاشاپ با Softaculous
مشاهده

 

تعریف ساده ای از Application Pool

Application Pool گروهی از یک یا چند URL است که توسط یک فرایند کارگر (Worker Process) یا مجموعه ای از فرآیندهای کارگر (Worker Processes) ارائه می شود.

Application Pool به شما این امکان را می دهد که برنامه های خود را از یکدیگر جدا کنید، حتی اگر آنها در همان سرور اجرا شوند. به این ترتیب، در صورت وجود یک خطا در یک برنامه، برنامه های دیگر را حذف نخواهد کرد.

علاوه بر این، Application Pool به برنامه های کاربردی شما اجازه می دهد برنامه های مختلفی را که نیاز به امنیت بیشتری دارند جدا کنید.

” هر دایرکتوری وب یا دایرکتوری مجازی می تواند به یک Application Pool اختصاص یابد. „

 


محدود کردن میزان حافظه مصرفی در Application Pool

با وجود Application Pool اختصاصی به ازای هر برنامه، می‌ توان برای سایت‌ های کم ترافیک و پرترافیک، زمان‌های Recycling متفاوتی را اعمال کرد. به این ترتیب مدیریت حافظه‌ بهتری قابل پیاده سازی می‌ باشد. همچنین در این حالت می‌ توان مشخص کرد کدام سایت از تعداد Worker Process بیشتر یا کمتری استفاده کند.

فرایندهای کارگر IIS حافظه زیادی را در سرورها می گیرند. ممکن است برای شما پیش بیاید که بخواهید حافظه ای را که هر برنامه می تواند استفاده کند محدود کنید. آیا باید حدی برای محدودیت حافظه مجازی تعیین کرد یا محدودیت حافظه خصوصی؟

 

در ادامه برای شما مثالی زدیم:

اگر محدودیت حافظه خصوصی را به 500 مگابایت و محدودیت حافظه مجازی را به 3 گیگابایت تنظیم کنم. چه زمانی Application Pool میتواند Recycle شود؟ آیا پس از رسیدن به 500 مگابایت یا پس از رسیدن به 3 گیگابایت Recycle می شود؟

هر دو این محدودیت ها در IIS قابل انجام است.

هر برنامه در IIS ما در Application Pool خود است. Application Pool ها به صورت پیش فرض دارای حافظه خصوصی 0 کیلوبایت هستند، به این معنی که هیچ محدودیتی وجود ندارد. شما می‌توانید با توجه به منابع سرور خود، هر تعداد وب‌سایت را که می‌ خواهید در تنظیمات پیش‌فرض Application Pool اجرا کنید.

تهیه بک آپ و انتقال بک آپ به سرور های تلاش نت
مشاهده

اگر محدودیت بایت خصوصی 500 مگابایت را تعیین کنید، به محض اینکه یک فرایند کارگر تلاش می کند 501 مگابایت را انجام دهد، IIS یک فرایند کارگر جدید را پردازش میکند و فرایند کارگر قدیمی را قطع می کند.

اگر محدودیت حافظه مجازی 3 گیگابایتی را تنظیم کنید، به محض اینکه یک فرایند کارگر تلاش می کند 3.001 گیگابایت را ذخیره کند، IIS یک فرایند کارگر جدید را پردازش میکند و فرایند کارگر قدیمی را قطع می کند.

 

 

در نظر داشته باشید: اگر شما در یک پلتفرم 64 بیتی دارید، باید بدانید که برنامه های ASP.NET به صورت تهاجمی حافظه مجازی را ذخیره می کنند. به عنوان مثال، یک برنامه در یک فارم (Farm) که تنها 88 مگابایت از بایت های خصوصی (Private Bytes) استفاده می کند، درحال حاضر در اندازه مجازی 5.4 گیگابایت قرار دارد. رزرو حافظه مجازی تابعی از RAM فیزیکی بر روی سرور است. همچنین مهم است که در یک پلتفرم 64 بیتی، رزرو بخش بزرگی از حافظه مجازی تاثیر عملکرد صفر دارد.

 

* نکته

اساساً، اگر در یک سرور IIS مشکل مصرف حافظه دارید، تنظیمی که می‌ خواهید محدود کنید، حافظه خصوصی/بایت است، این همان چیزی است که با مصرف حافظه مطابقت دارد.

 

 


چگونه می توان حافظه Application Pool را در IIS محدود کرد؟

برای انجام این کار، وارد IIS manager شوید و روی Application Pool در منوی درختی سمت چپ کلیک کنید و روی Set Application Pool Defaults در سمت راست در منوی Actions کلیک کنید. به پایین بروید بازیافت و در حد حافظه خصوصی (KB) در حد حافظه مورد نظر در KB تایپ کنید.

private-memory-limit.

 


چگونه محدودیت حافظه Application Pool برنامه خود را برداریم و یا تغییر دهیم؟

جهت برداشتن یا تغییر حد حافظه مجازی:

۱. مدیر IIS را باز کنید.

۲. در پنل اتصالات، Application Pools را انتخاب کنید.

۳. در پنل Application Pools، Application Pool برنامه مورد استفاده را انتخاب کنید.

۴. در پنل اقدامات، روی تنظیمات پیشرفته Advanced setting کلیک کنید.

۵. به پایین بروید و به بخش Recycling بروید.

۶. مقدار Virtual Memory Limit (KB) را به 0 تغییر دهید.

virtual-memory-limit

 


چگونه می‌ توان استفاده از حافظه Application Pool برنامه خود را بررسی کرد؟

روی Columns کلیک راست کنید، “Select Columns” را انتخاب کنید. (در برخی از نسخه های ویندوز در این مسیر است: views -> Select Columns). اطمینان حاصل کنید که “Command line” انتخاب شده است. سپس بر اساس نام مرتب کنید و به موارد w3wp.exe خود نگاه کنید و استفاده از حافظه را مقایسه کنید.

task-manager-select-columns

 


چکیده مطلب

در نتیجه برای پاسخ به این سوال که آیا می‌ توانیم میزان حافظه‌ ای را که Application Pool استفاده می‌ کند محدود کنیم یا خیر؟

باید گفت بله قابلیت ایجاد محدودیت و یا افزایش حافظه مصرفی در Application Pool وجود دارد و همچنین می توان حجم حافظه استفاده شده در آن را مورد بررسی قرار داد. هنگامی که بازیافت مبتنی بر حافظه (Memory-Based) وجود دارد، برنامه‌ های Application pool را که بیش از حد حافظه مصرف می کنند را می توان (Recycle) نمود.

5/5 - (1 vote)
دکمه بازگشت به بالا