به صورت کلی یک فایل در دیسک قرار دارد و زمانی که یک application درخواستی برای خواندن آن فایل یا نوشتن روی آن را به سیستم عامل میدهد، ابتدا باید این فایل در حالت opened قرار بگیرد تا بتوان به آن دست یافت و زمانی که به آن نیاز نیست در حالت closed قرار میگیرد.
در لینوکس برای یوزرهای غیر root محدودیتی در تعداد Open Files درنظر گرفته میشود و بسیار پیش میآید که در یک سرور لینوکسی با خطای Too Many Open Files مواجه میشوید. این خطا به این مفهوم است که محدودیت Open Files برای این یوزر به اتمام رسیده است. بعنوان نمونه در عکس زیر در ترمینال Cpanel بعد از اجرای یک دستور این خطا دریافت شده است.
اما میتوانید با افزایش Open Files خطا را برطرف نمایید.
افزایش Open Files
اگر از سیستم عامل Cloud linux استفاده میکنید مانند روشهای عادی در مسیر /etc/sysctl.conf قادر به افزایش Open Files نخواهید بود زیرا این محدودیت در سطح کلود لینوکس اعمال خواهد شد.
برای رفع این خطای ابتدا دستور زیر را در ترمینال هاست ( با یوزر هاست) اجرا نمایید.
ulimit -a
خروجی این دستور پارامترهایی مربوط به محدودیت های این یوزر است و یک از آن ها پارامتر open files است
بنابراین طبق این خروجی محدودیت open files برای این یوزر 4096 است. برای رفع این محدودیت دسترسی root نیاز است.
اگر دسترسی root به سرور دارید از طریق ssh به آن متصل شوید در صورتی که با نحوه اتصال ssh آشنایی ندارید این لینک را بررسی نمایید.
اما اگر دسترسی root به سرور ندارید از ادمین سرور درخواست نمایید تا این پارامتر را برای شما تغییر دهد.
بعد از برقراری اتصال ssh به سرور، ابتدا فایل هایی که پارامتر open files در آنها set شدند را با دستور زیر پیدا کنید:
grep -Ri "ulimit -n 4096" /etc/
خروجی این دستور مسیر چند فایل است که باید افزایش افزایش open files در تمامی آنها انجام شود.
بعد از اعمال تغییرات در تمامی فایل ها cage را با دستور زیر update کنید
cagefsctl --force-update
در نهایتاً اکانت را در whm یکبار suspend و مجدداً unsuspend نمایید.
خطا برطرف شد و تمام!