บทนำสู่ข้อผิดพลาด 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 script ที่ทุกครั้งที่ X ตรวจสอบหรือแม้แต่เพิ่มบรรทัดในบล็อกเริ่มต้นหรือรีสตาร์ทของ daemon 😉
แต่ทำไมฉันถึงอยากรู้ตัวเลือกที่ 2 นี้ล่ะ? ... นั่นคือสิ่งที่ฉันเคยพูด แต่เดือนที่แล้วเซิร์ฟเวอร์ Ubuntu เพิกเฉยต่อวิธีที่ 1 ดังนั้น ... ในกรณีที่ระบบปฏิบัติการโง่ ๆ เรามีตัวเลือกที่ 2 ที่ใช้งานได้ดีเช่นกัน😉
โพสต์ดี MySql ... พวกเขาใช้มากใน FreeBSD, … .KZKG ^ Gaara?, …มันจะดีถ้าคุณโพสต์เกี่ยวกับวิธีการติดตั้งและกำหนดค่า MySql ใน FreeBSD เช่น: SSH (secure - shell), SSH ( ผ่านทางเว็บ), SFTP (SSH-File Transfer Protocol), Apache - PHP- MySql, PHP5 และ PhpSysInfo Extensions
สำหรับสิ่งนี้ฉันจะต้องติดตั้ง FreeBSD ฉันไม่คิดว่าฉันจะมีเวลาตอนนี้ฉันเพิ่งเปลี่ยนงานและฉันมีความรับผิดชอบใหม่มากมาย🙁
เมื่อเร็ว ๆ นี้ฉันต้องทำสิ่งที่คล้ายกันสำหรับโปรเจ็กต์ที่มี nodejs ในกรณีของฉันมันเพิ่มขึ้นเป็น 250 และนั่นก็เพียงพอแล้วสำหรับฉันตอนนี้ฉันสบายดี ขอบคุณสำหรับข้อมูล
สวัสดีคุณช่วยฉันป้อน /etc/mysql/my.cfg ได้อย่างไร
ฉันมี VPS แต่ไม่สามารถเข้ากับ PUTTY ได้
อาศิรพจน์
ในการแก้ปัญหาของตัวเลือก 1.- ตัวเลือกแสดงความคิดเห็นและเก็บการเปลี่ยนแปลงเมื่อรีสตาร์ทเซิร์ฟเวอร์ไฟล์จะต้องได้รับการแก้ไขตามเวอร์ชัน:
////////////////////////////////////////////////// ////////////////////
// เปลี่ยนไดเร็กทอรีใน Ubuntu 16.04 //////////////////////
////////////////////////////////////////////////// ////////////////////
ฉันเห็น /etc/mysql/mysql.conf.d/mysqld.cnf
////////////////////////////////////////////////// ////////////////////
// เปลี่ยนไดเร็กทอรีใน Ubuntu 15.04 //////////////////////
////////////////////////////////////////////////// ////////////////////
vi /etc/mysql/mariadb.conf.d/mysqld.cnf
////////////////////////////////////////////////// ////////////////////
// ฉันเปลี่ยนไดเร็กทอรีใน Ubuntu เก่า ////////////////////////
////////////////////////////////////////////////// ////////////////////
ฉันเห็น /etc/mysql/my.cnf
////////////////////////////////////////////////// ////////////////////
// เพิ่มบรรทัดนี้ใต้แท็ก [mysqld] หรือ [mysql] //
// จากนั้นรีสตาร์ทเซิร์ฟเวอร์ //
////////////////////////////////////////////////// ////////////////////
สูงสุด_การเชื่อมต่อ = 500
บทช่วยสอนตั้งแต่เริ่มต้นในเวลาไม่นานจะบอกวิธีการเปลี่ยนแปลง