گاها ممکنه پیش اومده باشه هنگام کار با MySQL خصوصا تو سرورهای سیپنلی خطایی به شکل زیر دریافت کرده باشید:
Error : Got error 24 "Too many open files" from storage engine MyISAM
برای رفع این خطا اول وارد MySQL shell بشید ( با تایپ دستور mysql روی شل لینوکس) و دستور زیر رو اجرا کنید تا مشخص بشه محدودیت open files چقدر هست:
SHOW VARIABLES LIKE 'open_files_limit';
خروجی این دستور چیزی مشابه زیر خواهد بود:
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 10000 | +------------------+-------+
خب، طبق این خروجی محدودیت ما 10.000 فایل هست، با استفاده از همین عدد میتونیم فایلهایی که باید این پارامتر توی اونها ویرایش بشن رو پیدا کنیم. کافیه فقط دستور زیر رو اجرا کنیم:
grep -rnw '/etc/' -e '10000'
این دستور همه فایلهایی که حاوی این عدد هستند رو پیدا میکنه، معمولا روی سرورهای سیپنل فایل زیر باید ادیت بشه:
nano /etc/systemd/system/mariadb.service.d/migrated-from-my.cnf-settings.conf
و مقدار LimitNOFILE روی توی این فایل به میزان موردنیاز، مثلا 40.000 افزایش بدید. بعد از انجام این کار فایل کانفیگ دیتابیس رو با دستور زیر ادیت کنید:
nano /etc/my.cnf
و مقدار زیر رو بهش اضافه، یا اگر هست درش ویرایش کنید:
open_files_limit=40000
در نهایت دستورات زیر رو اجرا کنید تا تغییرات اعمال بشن:
systemctl daemon-reload service mysql restart
در نهایت یکبار دیگه وارد شل دیتابیس بشید و با دستور زیر مطمئن بشید که تغییرات مدنظرتون اعمال شده:
SHOW VARIABLES LIKE 'open_files_limit';
خروجی باید چیزی مشابه زیر باشه:
+------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 40000 | +------------------+-------+
برای خالی نبودن عریضه یکبار هم دستور آپدیت دیتابیس سرور رو اجرا کنید:
mysql_upgrade --force
و تمام!