
به اشتراک بگذارید
خطا “Too many connections” یا همان ERROR 1040 یکی از خطاهای رایج و در عین حال حیاتی در مدیریت سرور و پایگاه داده است. این خطا زمانی رخ میدهد که تعداد اتصالات همزمان به دیتابیس از مقدار مجاز تعیینشده در متغیر
max_connections عبور کند. در نتیجه، وبسایت یا اپلیکیشن شما از دسترس خارج شده و کاربران با صفحه خطا مواجه میشوند.💡 در این مقاله از بلاگ وبداده موارد زیر را مورد بررسی قراردادهایم و نکات پیشگیرانه برای جلوگیری از رفع مشکل کانکشن زیاد در آینده را نیز عنوان کردهایم.
- رفع خطای Too Many Connections و ارتباط آن با محدودیت
max_connections. - روشهای Too many connections fix برای رفع سریع خطا در MySQL و MariaDB.
- دلایل بروز خطای حداکثر اتصال دیتابیس مانند اتصالات Idle و Queryهای سنگین.
- افزایش موقت و دائمی
max_connectionsدر پیکربندی مدیریت اتصالات MySQL. - تنظیمات حیاتی مانند
wait_timeoutبرای جلوگیری از بروز مجدد خطا. - نقش Connection Pooling و بهینهسازی Query در کاهش مصرف منابع.
- رفع خطا ERROR 1040 در phpMyAdmin و FileZilla.
در این مقاله آموزشی، بهصورت جامع و مرحلهبهمرحله یاد میگیرید چگونه این خطا را شناسایی، برطرف و برای همیشه از وقوع مجدد آن جلوگیری کنید. همچنین به تفاوت رفتار این خطا در MySQL، MariaDB و حتی سرویسهای میزبانی مانند cPanel یا DirectAdmin میپردازیم.
آنچه در این مقاله میخوانید:
بخش اول: درک خطا Too many connections و دلایل بروز آن
در این بخش قصد داریم بهصورت عملی و کاربردی توضیح دهیم که چرا خطا Too many connections رخ میدهد و چطور میتوان بهجای واکنش موقتی، ریشهی آن را شناسایی کرد. شناخت علت اصلی این خطا به مدیر سرور کمک میکند تا بداند آیا مشکل از ترافیک بالا، کوئریهای غیربهینه یا تنظیمات نادرست دیتابیس است. در این قسمت شما یاد میگیرید چطور مقدار
max_connections را بررسی کنید، رفتار اتصالات فعال و Idle را تحلیل کنید و تفاوت میان مصرف طبیعی و غیرطبیعی منابع را تشخیص دهید تا بتوانید در مراحل بعدی اقدامات دقیق و هدفمند برای رفع خطای Too Many Connections انجام دهید.
مفهوم خطای Too Many Connections چیست؟
این خطا به زبان ساده یعنی: سرور دیتابیس به سقف مجاز اتصالات همزمان رسیده و دیگر توان پذیرش اتصال جدید را ندارد. در نتیجه، برنامهها و کاربران جدید نمیتوانند به دیتابیس دسترسی پیدا کنند تا زمانی که برخی از این اتصالها بسته شوند.و یا ساده تر:
سرور دیتابیس شما به حد نهایی اتصالات همزمان (max_connections) رسیده و نمیتواند اتصال جدیدی را بپذیرد.
بهصورت پیشفرض در MySQL این مقدار 151 اتصال است، اما بسته به نسخه و نوع هاستینگ ممکن است متفاوت باشد.
دلایل اصلی بروز خطا Too Many Connections
- ترافیک بالا و درخواستهای زیاد کاربران در بازه زمانی کوتاه.
- بسته نشدن صحیح اتصالات (Idle Connections) در برنامهها یا اسکریپتها.
- حملات DDoS یا Brute Force که منجر به باز ماندن کانکشنها میشود.
- Queryهای سنگین و غیربهینه که زمان زیادی باز میمانند.
- مقدار پایین max_connections در تنظیمات MySQL/MariaDB.
برای بررسی مقدار فعلی، دستور زیر را باید در محیط MySQL CLI (از طریق ترمینال یا SSH) وارد کنید. در صورت استفاده از phpMyAdmin نیز میتوانید آن را در بخش SQL اجرا کنید:
SHOW VARIABLES LIKE 'max_connections'; بخش دوم: روشهای رفع فوری خطا
در این بخش یاد میگیرید چطور خطا Too Many Connections را در سریعترین زمان ممکن رفع کنید و بدون ریستارت سرور، سرویس را به حالت عادی برگردانید. هدف این بخش ارائه دستورهای عملی برای شناسایی و بستن اتصالات معلق، افزایش موقت ظرفیت اتصال و آزادسازی منابع سرور است تا سایت یا اپلیکیشن شما در کمترین زمان دوباره در دسترس کاربران قرار گیرد.
1- شناسایی اتصالات فعال و معلق
میتوانید با دستور زیر تمام کانکشنهای فعلی را مشاهده کنید:
SHOW PROCESSLIST; این دستور لیستی از کاربران متصل، نوع درخواست و مدت زمان اجرای هر Query را نشان میدهد.
2- بستن کانکشنهای غیرضروری
برای حذف اتصال خاص (مثلاً ID شماره 32)، باید وارد محیط MySQL CLI شوید (از طریق SSH یا ترمینال سرور) و این دستور را اجرا کنید:
KILL 32; اگر قصد دارید همه اتصالات Idle را پاک کنید از دستور زیر استفاده کنید:
SELECT CONCAT('KILL ',id,';') FROM information_schema.processlist WHERE Command='Sleep'; سپس خروجی را اجرا کنید.
3. افزایش موقت max_connections
در مواقع اضطراری، میتوانید بدون ریستارت MySQL مقدار
max_connections را افزایش دهید. این دستور را باید در محیط MySQL CLI (از طریق SSH یا ترمینال سرور) وارد کنید تا مقدار اتصالات مجاز بهصورت موقت بیشتر شود:SET GLOBAL max_connections = 500; ⚠️ توجه: این تغییر موقتی است و با ریستارت سرویس از بین میرود.
4. بررسی وضعیت حافظه و منابع سرور
گاهی مشکل از کمبود RAM یا محدودیت سیستمعامل است. برای بررسی دقیق وضعیت منابع، باید این دستورها را در محیط ترمینال (SSH) وارد کنید تا بتوانید مصرف CPU و حافظه را در لحظه مشاهده کنید:
top یا:
free -m 💡 در صورت مشاهده مصرف بیش از حد، بهینهسازی منابع یا افزایش RAM ضروری است.
بهترین سرور های مجازی در دیتاسنترهای مطرح آسیایی، اروپایی و آمریکایی با امکان ارتقا آنی منابع و پلن
برای مشاهده ویژگیهای سروروهای مجازی وبداده
روی دکمه زیر کلیک کنید
روی دکمه زیر کلیک کنید
بخش سوم: رفع دائمی و بهینهسازی سرور
در این بخش یاد میگیرید چگونه خطا Too Many Connections را برای همیشه برطرف کنید و پایداری سرور را افزایش دهید. این مرحله شامل تغییرات دائمی در تنظیمات MySQL مانند افزایش max_connections، کاهش زمان انتظار اتصالات Idle، استفاده از Connection Pooling در برنامهها و بهینهسازی Queryها است. تمام این اقدامات باید در محیط SSH یا ویرایش فایل کانفیگ MySQL انجام شوند تا اثر ماندگار داشته باشند و از تکرار خطا جلوگیری شود.
1- افزایش دائمی max_connections
فایل پیکربندی MySQL را باید در محیط SSH یا از طریق ترمینال سرور ویرایش کنید، زیرا این فایل فقط از سمت مدیر (root) قابل دسترسی است:
nano /etc/my.cnf سپس در بخش
[mysqld] اضافه کنید:max_connections = 500 در نهایت سرویس را ریستارت کنید:
systemctl restart mysql 2- کاهش زمان انتظار اتصالات Idle
اتصالاتی که بسته نمیشوند میتوانند در وضعیت Sleep باقی بمانند. برای رفع این مشکل مقدار
wait_timeout را کاهش دهید:wait_timeout = 30
interactive_timeout = 30 3- استفاده از Connection Pooling
در زبانهای برنامهنویسی مانند PHP، Python یا Node.js از Connection Pooling استفاده کنید تا هر درخواست یک اتصال جدید باز نکند.
نمونه در PHP (PDO):
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass', [
PDO::ATTR_PERSISTENT => true
]); 4- بهینهسازی Queryها و ایندکسها
کوئریهای سنگین را با ایندکسگذاری، LIMIT و JOIN بهینه بازنویسی کنید. اجرای کوئریهای کند باعث نگهداشتن طولانی اتصالها میشود.
5- مانیتورینگ مداوم با ابزارهای حرفهای
از ابزارهایی مثل MySQLTuner, Percona Toolkit یا Netdata برای نظارت بر عملکرد سرور استفاده کنید. این ابزارها نقاط ضعف اتصال و منابع را شناسایی میکنند.


بخش چهارم: موارد خاص و سناریوهای مشابه
در این بخش به موقعیتهای خاصی پرداخته میشود که خطای Too Many Connections در ابزارها یا نرمافزارهای مختلف مثل phpMyAdmin و FTP رخ میدهد. هدف این بخش ارائه توضیحات واضح و راهکارهای عملی برای هر محیط است تا مدیر سرور بداند دقیقاً در چه موقعیتی باید از SSH، فایل کانفیگ یا تنظیمات کلاینت استفاده کند. بهطور خلاصه، یاد میگیرید چگونه خطا را در phpMyAdmin با افزایش موقت max_connections حل کنید و در FTP با محدود کردن تعداد اتصالهای همزمان از وقوع آن جلوگیری کنید.
خطای Too Many Connections در phpMyAdmin
در phpMyAdmin معمولاً این خطا بهصورت زیر نمایش داده میشود:
Error 1040: Too many connections
✅ راهحل:
- ورود به سرور از طریق SSH و افزایش موقت
max_connections. - بستن کانکشنهای Idle با
SHOW PROCESSLIST. - در هاست اشتراکی باید از پشتیبانی بخواهید تا مقدار مجاز را افزایش دهد.
خطای 421 Too Many Connections در FTP
اگر با خطای زیر در FileZilla یا دیگر FTP کلاینتها روبرو شدید:
421 Too many connections (8) from this IP
علت: تعداد اتصالهای همزمان از یک IP به سرور FTP زیاد است.
✅ راهحل:
✅ راهحل:
- به مسیر
Edit → Settings → Transfersبروید. - مقدار Maximum simultaneous transfers را روی 1 یا 2 تنظیم کنید.
- اگر دسترسی دارید، در
proftpd.confمقدارMaxClientsPerHostرا افزایش دهید.
بخش پنجم: اقدامات پیشگیرانه از خطا Too many connections برای آینده
- فعالسازی مانیتورینگ دیتابیس با ابزارهایی مثل Grafana + Prometheus.
- پاکسازی دورهای کانکشنهای Idle با اسکریپتهای خودکار.
- بهینهسازی ساختار جدولها با دستور
OPTIMIZE TABLE. - فعالسازی Query Cache (در MariaDB).
- بهروزرسانی منظم MySQL/MariaDB برای بهرهمندی از بهینهسازیهای جدید.

نتیجهگیری: خطا Error 1040: Too many connections
خطا Too many connections تنها یک مشکل فنی نیست، بلکه نشانهای از ضعف در طراحی یا پیکربندی سرور است. با درک دقیق علت، اجرای دستورات لازم و بهینهسازی مداوم میتوان این خطا را بهصورت قطعی برطرف کرد.
با رعایت نکاتی مانند تنظیم صحیح
max_connections، کاهش wait_timeout، بهینهسازی Queryها و استفاده از Connection Pool، سرور شما در ترافیک بالا نیز پایدار خواهد ماند.سوالات متداول از خطا Too many connections
1- آیا افزایش max_connections همیشه باعث حل خطا Too many connections میشود؟
خیر، اگر کدها اتصالها را بهدرستی نبندند، حتی مقدار بالا هم پر میشود.




