นานแค่ไหน“ นานเกินไป” สำหรับการเชื่อมต่อ MySQL หลับ?


38

ฉันเข้าสู่เซิร์ฟเวอร์ของฉันเพื่อตรวจสอบสถานะของฐานข้อมูลและสังเกตSHOW PROCESSLIST;ว่ามีการเชื่อมต่อจำนวนมากกำลังหลับอยู่ซึ่งเก่ามาก

ป้อนคำอธิบายรูปภาพที่นี่ ระยะเวลาใดที่ควร จำกัด เวลาการเชื่อมต่อก่อนที่การเชื่อมต่อจะถูกทำลาย

ฉันจะกำหนดเวลาใน MySQL 5.0.51a-3ubuntu5.4 ได้อย่างไร

บันทึก:

ฉันใช้ PHP 5.2.x และเฟรมเวิร์ก symfony 1.2


บล็อกรายละเอียด: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Suresh Kamrushi

คำตอบ:


53

mysqld จะหมดเวลาการเชื่อมต่อฐานข้อมูลตามตัวเลือกเซิร์ฟเวอร์สองตัวเลือก:

ทั้งสองเป็น 28,800 วินาที (8 ชั่วโมง) โดยค่าเริ่มต้น

คุณสามารถตั้งค่าตัวเลือกเหล่านี้ใน /etc/my.cnf

หากการเชื่อมต่อของคุณยังคงมีอยู่ (เปิดผ่านmysql_pconnect) คุณสามารถลดจำนวนเหล่านี้ลงในสิ่งที่สมเหตุสมผลเช่น 600 (10 นาที) หรือแม้กระทั่ง 60 (1 นาที) หรือหากแอปของคุณใช้งานได้ดีคุณสามารถปล่อยให้เป็นค่าเริ่มต้นได้ มันขึ้นอยู่กับคุณ

คุณต้องตั้งค่าเหล่านี้ดังต่อไปนี้ในmy.cnf(มีผลหลังจากmysqldรีสตาร์ทแล้ว):

[mysqld]
interactive_timeout=180
wait_timeout=180

หากคุณไม่ต้องการรีสตาร์ท mysql ให้รันคำสั่งทั้งสองนี้:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

นี่จะไม่ปิดการเชื่อมต่อที่เปิดอยู่แล้ว นี่จะทำให้การเชื่อมต่อใหม่ปิดลงใน 180 วินาที


ดังนั้นใน / etc / my.cnf ฉันจะใส่wait_timeout=180?
Patrick

@ แพทริกใช่ แต่คุณต้องตั้งค่าทั้ง interactive_timeout และ wait_timeout เป็น 180. ฉันได้อัพเดตคำตอบสำหรับการตอบกลับของคุณแล้ว
RolandoMySQLDBA

ไฟล์นี้สามารถอยู่ที่อื่นได้dev.mysql.com/doc/refman/5.1/en/option-files.htmlและตัวเลือกเหล่านี้อาจไม่สามารถทำการสำรวจได้ (เขียนด้วยตัวเอง)
nicolallias
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.