خطای MaxClients چیست؟
خطای server reached MaxClients setting, consider raising the MaxClients setting در لاگ Apache نشان میدهد تعداد پروسسهای همزمان Apache به حداکثر مجاز رسیده و سرور نمیتواند درخواستهای جدید بپذیرد. کاربران خطای 503 یا صفحه سفید میبینند.
دلایل
ترافیک بالای سایت، حمله DDoS، اسکریپتهای PHP کند، و تنظیم پایین MaxClients از دلایل اصلی هستند.
رفع خطا
روش ۱: افزایش MaxClients/MaxRequestWorkers
فایل تنظیمات Apache را ویرایش کنید:
nano /etc/httpd/conf/httpd.conf
در بخش <IfModule mpm_prefork_module>:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 256
MaxConnectionsPerChild 10000
</IfModule>
توجه: در Apache 2.4، MaxClients به MaxRequestWorkers تغییر نام داده.
روش ۲: محاسبه صحیح MaxRequestWorkers
فرمول: MaxRequestWorkers = (کل RAM - RAM سایر سرویسها) / میانگین مصرف RAM هر پروسس Apache
بررسی مصرف RAM هر پروسس:
ps aux | grep httpd | awk '{sum += $6} END {print sum/NR/1024 " MB"}'
روش ۳: استفاده از MPM Event به جای Prefork
MPM Event مصرف حافظه کمتری دارد و اتصالات بیشتری را مدیریت میکند.
روش ۴: فعالسازی KeepAlive بهینه
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3
روش ۵: استفاده از LiteSpeed
LiteSpeed با معماری event-driven منابع بسیار کمتری مصرف میکند و مشکل MaxClients را ندارد.
بررسی وضعیت
# پروسسهای فعلی Apache
ps aux | grep httpd | wc -l
# مانیتورینگ زنده
watch -n 1 "ps aux | grep httpd | wc -l"
اگر مرتباً با این خطا مواجه هستید، سرور مجازی با RAM بیشتر یا مهاجرت به LiteSpeed توصیه میشود. هاست وردپرس میهن هاستینگ از LiteSpeed استفاده میکند و این مشکل را ندارد. کانفیگ سرور شامل بهینهسازی Apache MPM.