Mysql บ่อยครั้งหายไป (ข้อผิดพลาด 2006) ในสภาพแวดล้อมการใช้งานจริง

ฉันกำลังใช้งานเว็บไซต์บน django 1.10, python3.4, mysqlclient, mysql5.5

ฉันมีคำสั่งการจัดการหลายคำสั่งที่ทำงานอยู่เบื้องหลังสำหรับงานต่างๆ (เช่น การส่งอีเมล การอัปเดตตาราง) ในเวลาต่างกัน เมื่อเร็ว ๆ นี้ ฉันเริ่มเห็น Mysql จำนวนมากหายไป (ข้อผิดพลาด 2006)

ฉันพยายามเปลี่ยน Connection_timeout ให้มากกว่าอายุ max_connection ซึ่งช่วยแก้ไขปัญหาเล็กน้อยที่ข้อผิดพลาด 2006 หยุดไม่ให้เกิดขึ้นสำหรับฟังก์ชันที่ทำงานอยู่ในกรณีส่วนใหญ่ แต่กรณีอื่นๆ ก็เป็นเหมือนเดิมและมักพบข้อผิดพลาด 2006

ในบางกรณี ฉันลองใช้ django.db.connection.close() ก่อนที่จะรันฟังก์ชันหรือลองใช้งาน - ยกเว้นการวนซ้ำ ในสถานที่เหล่านั้น ข้อผิดพลาดนี้จะไม่เกิดขึ้นอีกต่อไป แต่ฉันไม่สามารถใส่ try-ยกเว้นลูปนี้ในทุกฟังก์ชันได้

อะไรคือสาเหตุของข้อผิดพลาดซ้ำ ๆ ที่ Mysql หายไป? อะไรคือวิธีแก้ปัญหาที่แตกต่างกัน และอะไรคือทางออกที่ดีที่สุด เพื่อที่ฉันจะได้ไม่ต้องเปลี่ยนรหัสมากนัก

ตัวแปรอื่นๆ:

เราอัปเกรดจาก django 1.7 เป็น 1.10 และอัปเดตแพ็คเกจ mysqlclient เมื่อเร็ว ๆ นี้ และปัญหาก็เกิดขึ้นหลังจากนั้น

ในช่วงการอัปเดต การเข้าชมบนเว็บไซต์ของเราก็เพิ่มขึ้นหลายเท่าเช่นกัน นั่นสามารถเป็นตัวกระตุ้นได้หรือไม่?


person sprksh    schedule 15.02.2017    source แหล่งที่มา


คำตอบ (1)


ตามที่เห็นในที่อื่น ปัญหาอาจเป็นได้ว่าการสืบค้นของคุณยาวเกินไป หรือเซิร์ฟเวอร์ปิดการเชื่อมต่อเนื่องจากไม่มีการใช้งาน ขึ้นอยู่กับสถานการณ์เป็นอย่างมาก แต่ดูเหมือนว่าหากคุณไม่ได้อยู่ในการทำธุรกรรม (ซึ่งจะละทิ้งความเป็นไปได้ครั้งที่สอง) คุณสามารถใช้สิ่งที่คล้ายกับ Hook พร้อมใช้งานสำหรับการลองใหม่อัตโนมัติหลังจากการหยุดชะงักในการตั้งค่า django และ mysql

person Marcos Dione    schedule 28.11.2017