mysql ปรับค่าการเชื่อมต่อสูงสุดโดยอัตโนมัติ


11

ฉันได้ตั้งค่าการเชื่อมต่อสูงสุดเป็นประมาณ 2000 ในไฟล์ my.cnf

max_connections=2048

ฉันอัพเกรดเป็น 5.5.20 และตอนนี้ฉันเห็นบรรทัดต่อไปนี้ในบันทึกข้อผิดพลาด

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

ทำไม mysql เปลี่ยนค่าการเชื่อมต่อสูงสุดเป็น 214

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

ไฟล์ที่นิ่มและแข็งถูก จำกัด โดยระบบปฏิบัติการคือ 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

จำนวนการเชื่อมต่อสูงสุดที่ใช้จริง:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+

1
ลองตั้งค่า ulimit open files ให้สูงขึ้นเช่น 4096ulimit -n 4096

พฤติกรรมเปลี่ยนไปหรือไม่? ฉันมีเวอร์ชั่น 5.0.77 และฉันไม่ได้สังเกตเห็นปัญหานี้ เฉพาะเมื่อฉันอัพเกรดเป็น 5.5.20 ฉันได้เปลี่ยนค่าแล้ว!
shantanuo

1
เพียงแค่ถามคำถามที่ชัดเจน คุณได้ยืนยันว่าการอัพเกรดไม่ได้เปลี่ยน my.cnf ของคุณ? นอกจากนี้ระบบปฏิบัติการอะไร? สิ่งนี้ถูกติดตั้งโดยผู้จัดการแพคเกจเช่นyum? ถ้าเป็นเช่นนั้น
Derek Downey

คำตอบ:


6

ดูเหมือนว่าตกลงสำหรับฉัน คุณไม่สามารถมี max_connections ที่ใหญ่กว่านั้นได้เพราะคุณ open_files_limit ต่ำเกินไป สำหรับทุกการเชื่อมต่อ MySQL จะเปิดไฟล์หลายไฟล์ ลองดูที่นี่

ดังนั้นคุณจะต้องเพิ่มขีด จำกัด การเปิดไฟล์บนระบบปฏิบัติการของคุณและหลังจากนั้นคุณสามารถใส่ค่า max_connections ที่สูงขึ้นได้


5

นี่ดูเหมือนจะเป็นปัญหาเดียวกับที่ฉันตอบใน stackoverflow ที่นี่แม้ว่าฉันจะใช้ CentOS 7 และ MySQL 5.6.26

คุณต้อง จำกัด การเปิดไฟล์ของคุณทั้งสำหรับผู้ใช้ mysql (ใน limit.conf) และสำหรับบริการ mysql (ในไฟล์ mysql.service)

ผนวกสองบรรทัดต่อไปนี้เพื่อ /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

ผนวกบรรทัดนี้ไปที่ /usr/lib/systemd/system/mysqld.service (ในส่วน [บริการ])

LimitNOFILE=65535

จากนั้นในที่สุดก็เริ่มต้นใหม่และตรวจสอบว่าข้อความแสดงข้อผิดพลาดเหล่านั้นหายไปจากบันทึกข้อผิดพลาด mysql ของคุณ


โซลูชันอื่น ๆ คือ: dba.stackexchange.com/questions/32987/…
Nav

@Nav - ใช่คุณไม่สามารถใช้การเชื่อมต่อได้สูงสุดที่กำหนดไว้หากระบบปฏิบัติการของคุณไม่อนุญาตให้ใช้หมายเลขที่เหมาะสมของการจัดการไฟล์โดย mysqld
MNB

นอกจากนี้ Ubuntu 15.04+ ต้องการแนวทางที่แตกต่าง: stackoverflow.com/questions/23977095/…
Nav

0

นี่ดูเหมือนจะเป็นข้อผิดพลาดใน mysqld ใหม่ ผมมีปัญหาเดียวกัน. การตั้งค่า max_connections เป็น 700 ใช้งานได้ แต่หากตั้งเป็น 900 จะถูกรีเซ็ตเป็น 214 ระหว่างการเริ่มต้น หากนี่เป็นการเปลี่ยนแปลงที่ตั้งใจแล้วก็จะลดลงเหลือ 700 หรือบางอย่างที่คล้ายกันค่า 214 ไม่สมเหตุสมผล
อย่างไรก็ตามการเพิ่มขีด จำกัด descriptor ด้วย ulimit -n จะช่วยแก้ปัญหาได้

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