خطای Too many open files در MySQL

گاها ممکنه پیش اومده باشه هنگام کار با 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

و تمام!

منتشرشده توسط

FaЯshid

وب‌هاستینگ شغل مورد علاقمه و سعی می‌کنم بیشتر توی این حوزه بنویسم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *