مشكلة

عندما يحاول العميل تسجيل الدخول إلى MySQL ، قد يتم رفضه أحيانًا ويتلقى رسالة خطأ تفيد بوجود " اتصالات كثيرة جدًا ". هذا يعني أنه تم الوصول إلى الحد الأقصى لعدد العملاء الذين قد يكونون متصلين بالخادم. إما أن على العميل الانتظار حتى يقوم عميل آخر بتسجيل الخروج ، أو سيتعين على المسؤول زيادة الحد الأقصى لعدد الاتصالات المسموح بها.
يمكن العثور على معلومات حول الاتصالات بالخادم باستخدام عبارة SHOW STATUS:
$ mysql –u root –p
اعرض الحالة مثل "max_used_connections"؛
أولاً ، يجب التأكد من أن تطبيقاتك تغلق الاتصالات بالخادم عندما لا تكون هناك حاجة إليها. ومع ذلك ، يمكنك حل هذا الخطأ عن طريق زيادة قيمة متغير max_connections وربما تقليل قيمة wait_timeout إذا كنت تتوقع أن العديد من الاتصالات بخادمك لا يتم استخدامها بنشاط.

الحلول

يتم تضمين الحد الأقصى لعدد سلاسل عمليات الوصلات المسموح بها للخادم في متغير النظام max_connections . القيمة الافتراضية هي 151. لمعرفة القيمة التي تم تعيين هذا المتغير عليها ، قم بتشغيل أمر SQL التالي:
mysql $ –u root –p
mysql> إظهار المتغيرات مثل "max_connections"؛
+ ----------------- + ------- +
| Variable_name | القيمة |
+ ----------------- + ------- +
| max_connections | 151 |
+ ----------------- + ------- +
تغيير معلمة max_connections (مؤقتًا)
لتغيير قيمة max_connections متغير النظام ، يمكن استخدام خيار –max_connections . لتغيير هذا المتغير مؤقتًا أثناء تشغيل الخادم ، أدخل عبارة SQL التالية:
mysql $ –u root –p
mysql> SET GLOBAL max_connections = 512؛
ملاحظة : ليس من الضروري أن يكون لديك عميل متصل حاليًا بقطع اتصال الخادم لتشغيل عبارة SQL هذه كجذر. يسمح الخادم باتصال واحد أكثر من قيمة max_connections. اتصال واحد محجوز للمستخدم الجذر أو أي حسابات أخرى لديها امتياز SUPER.
عند إعادة تشغيل البرنامج الخفي لخادم MySQL (mysqld) ، ستعود القيمة أعلاه إلى القيمة الافتراضية وهي 151. لإجراء تغييرات دائمة ، استخدم الطريقة أدناه.
تغيير معلمة max_connections (بشكل دائم)
تتمثل الطريقة الأفضل لتغيير معلمة max_connections في إضافة هذا الخيار إلى ملف الخيارات ( my.cnf أو my.ini ، اعتمادًا على نظامك) بحيث يسري مفعولها في المرة التالية التي يتم فيها إعادة تشغيل الخادم. بافتراض أنك تستخدم ملف /etc/my.cnf ، أضف السطر أدناه إليه.
# vi /etc/my.cnf
max_connections = 512
الآن أعد تشغيل البرنامج الخفي mysqld حتى تصبح التغييرات سارية المفعول.
بالنسبة إلى CentOS / RHEL 6 :
# إعادة تشغيل خدمة mysqld
بالنسبة إلى CentOS / RHEL 7 :
# systemctl إعادة تشغيل mysqld
ما هو الحد الأقصى لقيمة max_connections على Linux؟
يتم تحديد الحد الأعلى لمدى حجم تكوين max_connections إلى حد كبير بواسطة نظام التشغيل بالإضافة إلى الحد الأقصى البالغ 100000 الذي تعينه MySQL. لينكس لديه حد يسمى max open files ، وهذا محدد "لكل تسجيل دخول" ويوضح الحد الأقصى لعدد الملفات التي يمكن للعملية فتحها. الافتراضي هو 1024 (والذي يمكنك رؤيته باستخدام ulimit -n ).