مقدمة إلى خطأ MySQL: اتصالات كثيرة جدًا
عندما يكون لديك تطبيق ويب (موقع، مدونة، منتدى، إلخ) يشهد إقبالًا كبيرًا، أي عدد كبير من المستخدمين، فإن ذلك يؤدي إلى زيادة استهلاك موارد الخادم. إذا كان هذا التطبيق يستخدم قاعدة بيانات MySQL وكانت الاستعلامات كثيرة جدًا ( بسبب ضعف برمجة الموقع أو كثرة المستخدمين )، فقد يعرض MySQL هذا الخطأ:
mysqli_connect(): (HY000/1040): Too many connections
ماذا يعني MySQL: خطأ اتصالات كثيرة جدًا؟
هذا يعني أن عددًا كبيرًا جدًا من الطلبات يأتي إلى MySQL ، أكثر مما يمكنه قبوله ، أكثر مما يمكنه الانتظار أو الانتظار.
كيف حلها؟
بسيط ، يجب علينا زيادة الحد الأقصى للطلبات (الاتصالات) التي تدعمها MySQL.
سأقدم لك خيارين لإصلاح هذه المشكلة:
1. نقوم بتعديل الملف /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
نضع فيه ما يلي حيث تقول [mysql]:
max_connections = 500 max_user_connections = 500
سيؤدي هذا إلى زيادة الحد الأقصى لعدد الاتصالات من 100 (وهو الافتراضي) إلى 500.
نحفظ ونخرج ، ثم نعيد تشغيل خدمة MySQL وهذا كل شيء. هذا التغيير دائم.
2. هناك طريقة أخرى لحل هذه المشكلة وهي تغيير الحد الأقصى، ولكن باستخدام استعلام MySQL.
لنعرض أولاً الحد الحالي:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
سيظهر لنا هذا شيئًا كهذا:
+ ----------------- + ------- + | Variable_name | القيمة | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
بمعنى آخر ، الحد الحالي هو 151 اتصالًا ، حسنًا ، لنرفعها إلى 500 بواسطة استعلام:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
جاهزة!
المشكلة بهذه الطريقة هي أنه عند إعادة تشغيل الخدمة ، يتم فقد هذا التكوين.
للتعويض عن هذه التفاصيل، يمكنك إنشاء برنامج نصي bash يتحقق من كل X مقدار من الوقت، أو حتى إضافة السطر إلى كتلة البداية أو إعادة التشغيل الخاصة بالبرنامج الخفي
ولكن لماذا أريد أن أعرف هذا الخيار الثاني؟ … حسنًا، هذا ما قلته. لكن منذ شهر واحد، تجاهل خادم Ubuntu الطريقة رقم 2، لذا... في الحالات القصوى لنظام التشغيل الغبي، لدينا هذا الخيار الثاني الذي يعمل أيضًا