แวะเข้ามา share ครับ 

บางทีการแก้ปัญหาแบบนี้ เป็นการแก้ที่ปลายเหตุนะครับ
บางครั้งมีสาเหตุอื่นๆ อีก เช่น ปัญหาที่เกิดจาก Database ไม่ได้มีการสร้าง Index  แล้วมีการ query ข้อมูลขนาดใหญ่ (แล้ว resource ที่จองไว้ให้ MySQL น้อยเกินไป)  ทำให้ MySQL ต้องทำงานหนักมาก

 โดยเฉพาะการใช้ฐานข้อมูลแบบ  MyISAM จะก่อให้เกิดปัญหา dead lock เนื่องจาก MyISAM จะ lock ในระดับ Table  โดยเฉพาะอย่างยิ่งการใช้ คำสั่งในการ join หรือ update ดังนั้นเมื่อ sql command  มีอาการค้างเกิดขึ้น  จะทำให้ sql command ที่เข้ามาทีหลัง ไม่สามารถทำงานได้  และจะหยุดรอจนกว่า อันแรกจะหยุด  เมื่อ server มี sql command เข้ามาอีกเรื่อยๆอีก  จะทำให้ connection ที่จองไว้เต็ม  ทำให้ไม่สามารถ remote เข้าไป MySQL  เพื่อ เข้าไปจัดการแก้ไข (แม้แต่ mysql's root ก็ตาม)

 หากว่าเป็นปัญหาที่ database จริง  ถึงแม้ว่าการเพิ่ม resource ให้กับ MySQL จะช่วยให้ทำงานต่อไปได้  แต่เมื่อถึงจุดๆ หนึ่ง  เราก็ต้องเพิ่ม resource ให้กับ MySQL เพิ่มอีก จน Server รับไม่ไหว

 

วิธีการที่จะรู้ว่า มี sql command ที่ทำงานช้าอยู่หรือไม่นั้น  ดูได้จาก mysql slow log นั่นเอง  ซึ่ง log นี้จะบันทึก คำสั่ง sql ที่ทำงานช้า ซึ่งจะนำไป วิเคราะห์ การทำงานได้ในภายหลัง