จะกำจัดข้อผิดพลาด“ การเชื่อมต่อผู้ใช้สูงสุด” ได้อย่างไร


16

ฉันใช้ MySQLi สำหรับ webapp ของฉัน mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connectionsแต่เมื่อใดก็ตามที่ฉันต้องการที่จะไปที่หน้าโดยเฉพาะอย่างยิ่งบางอย่างผมได้รับ

ฉันพยายามปิดการเชื่อมต่อทั้งหมดแล้ว แต่นี่ไม่ได้ปรับปรุงสถานการณ์

มีวิธีที่จะรู้ว่าการเชื่อมต่อใดที่เปิดอยู่ในช่วงเวลาใดช่วงเวลาหนึ่งหรือข้อมูลที่มีประโยชน์อื่น ๆ ที่สามารถช่วยฉันแก้ไขปัญหานี้ได้?

BTW ฉันใช้ PHP 5.2.17 และ MySQL 5.1

คำตอบ:


24

ตัวเลือกmax_user_connectionsเป็นข้อ จำกัด ที่กำหนดไม่ใช่จำนวนรวมของการเชื่อมต่อพร้อมกันในอินสแตนซ์ของเซิร์ฟเวอร์ แต่ในบัญชีผู้ใช้แต่ละบัญชี

db_user@localhostสมมติว่าผู้ใช้จะเรียกว่า คุณสามารถค้นหาว่าขีด จำกัด การเชื่อมต่อของผู้ใช้รายนี้คืออะไรโดยใช้แบบสอบถามนี้:

SELECT max_user_connections FROM mysql.user
WHERE user='db_user' AND host='localhost';

หากนี่เป็นค่าที่ไม่ใช่ศูนย์ให้เปลี่ยนกลับเป็น:

GRANT USAGE ON *.* TO db_user@localhost WITH MAX_USER_CONNECTIONS 0;

หรือ

UPDATE mysql.user SET max_user_connections = 0
WHERE user='db_user' AND host='localhost';
FLUSH PRIVILEGES;

สิ่งนี้จะทำให้mysqldผู้ใช้db_user@localhostสามารถใช้max_user_connectionsการตั้งค่าส่วนกลางเป็นข้อ จำกัด

เมื่อคุณมาถึงจุดนี้ให้ตรวจสอบการตั้งค่าระดับโลกโดยใช้

SHOW VARIABLES LIKE 'max_user_connections';

หากนี่เป็นค่าที่ไม่ใช่ศูนย์คุณต้องทำสองสิ่ง

สิ่ง # 1 : ค้นหาการตั้งค่าใน/etc/my.cnf

[mysqld]
max_user_connections = <some number>

แสดงความคิดเห็นว่าสายออก

สิ่ง # 2 : ตั้งค่าแบบไดนามิก

SET GLOBAL max_user_connections = 0;

ไม่จำเป็นต้องทำการรีสตาร์ท MySQL

ข้อแม้

ฉันได้กล่าวถึงการตั้งค่านี้ในอดีต

ให้มันลอง !!!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.