วิธีแก้ไขข้อผิดพลาด MySQL: การเชื่อมต่อมากเกินไป

บทนำสู่ข้อผิดพลาด MySQL: การเชื่อมต่อมากเกินไป

เมื่อคุณมีเว็บแอปพลิเคชัน (เว็บไซต์ บล็อก ฟอรัม ฯลฯ) ที่มีการใช้งานสูง หมายความว่ามีผู้ใช้จำนวนมากเข้าชม นั่นหมายถึงการใช้ทรัพยากรเซิร์ฟเวอร์เพิ่มขึ้น หากเว็บแอปพลิเคชันนี้ใช้ฐานข้อมูล MySQL และมีการเรียกใช้คำสั่ง SQL จำนวนมาก ( เนื่องจากการเขียนโปรแกรมเว็บไซต์ที่ไม่ดีหรือปริมาณผู้ใช้สูง ) 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;'

พร้อม!

ปัญหาในลักษณะนี้คือเมื่อเริ่มบริการใหม่การกำหนดค่านี้จะหายไป

เพื่อชดเชยรายละเอียดนี้ คุณสามารถสร้างสคริปต์ทุบตีที่จะตรวจสอบทุกๆ X ระยะเวลา หรือแม้แต่เพิ่มบรรทัดที่บล็อกเริ่มต้นหรือรีสตาร์ทของ daemon 

แต่แล้วทำไมฉันถึงอยากรู้ตัวเลือกที่ 2 นี้ล่ะ? …ก็นั่นคือสิ่งที่ฉันพูด แต่เมื่อเดือนที่แล้วเซิร์ฟเวอร์ Ubuntu เพิกเฉยต่อวิธีที่ 1 ดังนั้น... ในกรณีที่ร้ายแรงของระบบปฏิบัติการที่โง่เขลา เรามีตัวเลือกที่ 2 ซึ่งใช้ได้ผลเช่นกัน 


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google