تعیین حداکثر تعداد کلاینت ها برای Apache/Prefork


چگونه حداکثر کلاینت ها را برای Apache/Prefork تنظیم کنیم :


اصول اولیه :
1-    تعیین مقدار RAM که برای آپاچی در دسترس است.
2-    تعیین مقدار RAM برای هر کاربر آپاچی
3-    تنظیم حداکثر تعداد کلاینت ها به : (مقدار RAM در هر فرآیند آپاچی) /(مقدار RAM در دسترس آپاچی)
4-    نظارت و تنظیم

چگونه مقادیر را تغییر دهیم :

مقادیر حداکثر تعداد کلاینت ها (MaxClients) در فایل اصلی main Apache configuration قرار گرفته است. بعنوان مثال /etc/apache2/apache2.conf یا /etc/httpd/httpd.conf .

بخش مربوطه مانند شکل زیر می باشد :




بعد از تغییر مقادیر فایل را دخیره کنید و Apache را با دستور apache2ctl graceful-stop && apache2ctl start ریستارت نمائید.


چرا این موضوع مهم است؟

یکی از شایع ترین دلایل سقوط یک وب سرور این است که تمام حافظه فیزیکی (RAM) موجود را مصرف می کند. وقتی که این اتفاق پیش می آید ، سیستم عامل با حرکت بر روی دیسک تلاش می کند مقداری از این فضا را آزاد کند. در لینوکس این عمل Swap Space و در ویندوز Page File نامیده می شود.  این فرآیند به منظور شکست دادن RAM  ( که دسترسی سریع به داده ها را فراهم کرده است) می باشد و نیاز به منابع ( CPU ، دیسک I/O ) برای انجام مبادله داده ها بین دیسک  و RAM دارد. فضای جابجایی هم می تواند بطور کامل مصرف شود، اما مشکل اصلی این است که در یک محیط با سرعت بالا مانند وب سرور ، سیستم به سرعت می تواند سرزیر شود و فقط تلاش برای مدیریت حافظه می تواند برای این سقوط موثر باشد. به همین دلیل به آن Thrashing می گویند.
به این کار اجتناب از شکست گفته می شود و تنها راه برای انجام این کار این است که آپاچی را از مصرف تمام RAM در دسترس نگهداری شود.


چگونه مقدار RAM موجود برای آپاچی را تعیین کنیم :

مقدار حافظه در دسترس برای آپاچی مجموع مقدار RAM روی سیستم منهای مقداری است که توسط تمام فرآیندهای دیگر استفاده می شود. متاسفانه ، تعیین مقدار RAM که بر روی سیستم استفاده می شود دشوار است. این مورد حتی از تعیین حداکثر حافظه ای که توسط دیگر فرآیندها زمانی که سرور تحت بار سنگین قرار دارد مشکل تر می باشد. حتی زمانی که شما در حال اجرای Mysql بر روی همان سیستم هستید کار محاسبه دشوار تر می شود. بطور معمول هر درخواست که توسط آپاچی بکار گرفته می شود حداقل یک اتصال با Mysql را باز می کند، بنابراین بعنوان یک درخواست آپاچی میزان مصرف RAM توسط Mysql افزایش می یابد. در کوتاه مدت، میزان مصرف حافظه Mysql بستگی دارد به اینکه چگونه آنرا توسط نرم افزار خود استفاده می شود. شما می توانید از اسکریپت mysqltuner  برای دریافت حداکثر مقدار Mysql استفاده کنید. اما اگر تنظمیات آپاچی شما به درستی صورت گرفته باشد به ندرت مشکلی درباره میزان حافظه خواهید داشت.

بهترین راهکار این است که Mysql را که مصرف بالایی دارد در یک سرور جداگانه قرار دهیم و بیشترین مقدار را برای آن سرور در نظر بگیریم و با توجه به Server load تنظیمات را انجام دهیم.
برای تمامی فرآیندهای دیگر مقدار 256MB را در نظر بگیرید.اگر شما در حال استفاده از خدمات دیگری همانند ماشین میزبانی مجازی هستید، ممکن است تمایل داشته باشید که از مقدار بیشتری استفاده کنید.
بنابراین در ابتدا برای یک سیستم معمولی 256MB +  حداکثر استفاده حافظه Mysql را در نظر بگیرید.


چگونه میزان RAM را برای مصرف هر فرآیند آپاچی تعیین کنیم :

باز هم، به حافظه مشترک (مخصوصا اگر از APC استفاده می کنید) بافر، دخیره و غیره توجه کنید. تعیین این موارد خیلی دشوار است. در تجربه ما، بهترین ابزار تعیین مصرف حافظه برای هر فرآیند  ps_mem.py می باشد.

خروجی ps_mem.py شبیه شکل زیر می باشد :


در اینجا مشاهده می کنید که 123 فرآیند Apache2 وجود دارد که در مجموع 4.3GB مصرف حافظه دارند بنابراین هر فرآیند آپاچی حدود 28MB از فضای RAM را استفاده می کنند. این سیستم حدود 8GB حافظه (RAM) دارد و اگرچه ysqltuner.pl گزارش می دهد که Mysql حداکثر 1GB از حافظه را مصرف می کند، ما می توانیم ببینم که مقداری که مصرف شده خیلی کمتر از 1GB می باشد. برای اطمینان برای دیگر فرآیندها 1.5GB حافظه در نظر می گیریم و میانگین مصرف آپاچی را به 32MB گرد می کنیم.
(6.5 x 1024) / 32 = 208
برای اطمینان بیشتر آنرا به 200  گرد می کنیم، زیرا بهتر است که کمتر تخمین زده شود.


نظارت کردن بر سرور :

فرآیندهای آپاچی و مجموع حافظه مصرف شده را مشاهده کنید . در اینجا دستوری داریم که خروجی یکسانی را نشان میدهد که هر ثانیه بروز رسانی می شود.
watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

خروجی تولید شده مانند شکل زیر می باشد :



با استفاده از +/- سطر را بافر / ذخیره کنید. مقادیر برحسب MB می باشد. شما می توانید در یک نقطه از زمان ببینید که حدود 2.3GB  از حافظه استفاده می شود و 5.7GB از حافظه آزاد می باشد. اگر فرآیندهای آپاچی به تنظیمات حداکثر تعداد کلاینت ها نزدیک شوند و مقدار زیادی حافظه در دسترس خواهید داشت که شما می توانید قدم به قدم این مقدار راافزایش دهید تا این مقدار به کمتر از حداکثر تعداد کلاینت ها برسد و سپس آنرا Restart  کنید.

آیا این پاسخ به شما کمک کرد؟

انجمن پشتیبانی میزبانی زاگریو

انجمن پرسش و پاسخ میزبانی زاگریو
پاسخ به پرسش های شما در زمینه فن آوری اطلاعات و صنعت میزبانی وب

 چاپ این مقاله

خوانده شده

نحوه پیدا کردن فایلهای حجیم در سرورهای لینوکس از طریق SSH

دستور خاصی جهت پیدا کردن فایلهای حجیم در سیستم عامل های لینوکس وجود ندارد، با این حال شما می...

آموزش نصب Apache، MariaDB و PHP بر روی سیستم عامل CentOS 7

در این مقاله نحوه نصب وب سرور آپاچی (آخرین نسخه)، بانک اطلاعاتی ماریا دی بی (آخرین نسخه) و پی اچ...

چگونه از rsync برای همگام سازی (Sync ) دایرکتوریهای Remote و Local بر روی یک VPS استفاده کنیم:

مقدمه : Rsync که پایه و اساس remote sync است، یک ابزار برای همگام سازی فایل های Local و...

18 دستور برای نظارت بر پهنای باند شبکه در سرور های لینوکسی

نظارت بر شبکه های لینوکسی: این مقاله به برخی از ابزارهای خط فرمان لینوکس اشاره میکند که می...

افزودن فضای اضافی به پارتیشن اصلی در سرورهای لینوکس از طریق SSH

افزایش حجم  پارتیشن ریشه -  LVM- CentOS Increase Root Partition size - LVM - CentOSبرای افزایش...

Powered by WHMCompleteSolution