BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: C H O K E ที่ สิงหาคม 01, 2013, 12:41:45 PM
-
วันนี้ที่ รพ. เวลาประมาณ 10 โมงกว่าๆ เกิดปัญหา Hosxp ช้าทั้งระบบ จะเป็นเวลาบันทึก
จากการตรวจสอบเจอปัญหา เวลาบันทึกแล้ว ระบบจะเขียนคำสั่งไปเก็บไว้ในตาราง replicate_log มีข้อความว่า Locked ขึ้นที่คอลัมน์ State จึงคิดว่าปัญหาน่าจะเกิดจากตรงนี้แหละ ก็แก้ปัญหาด้วยการเข้าไปเครียข้อมูลใน replicate_log และต้อง restart mysql ด้วย ถึงจะหาย (คืนนี้อาจจะต้องทำ optimize table ต่อ)
จึงอยากจะสอบถาม เพื่อหาทางป้องกันไม่ให้เกิดอีก เพราะวุ่นวายมาก ผอ.ถึงกับต้องขึ้นมาดูด้วยตัวเอง
1. สาเหตุที่เกิดการ Locked เป็นเพราะอะไรครับ (อาจต้องโดนสอบถาม)
2. จะป้องกันไม่ให้เกิดปัญหานี้ได้อย่างไรครับ (เพราะจากที่โทรไปถาม มันสามารถเกิดกับตารางอื่นๆได้ด้วย)
ผมใช้ hosxp เวอร์ชั่น 56.6.20c อัพมาได้หลายสัปดาห์แล้วใช้งานได้ปกติดี mysql เป็น percona 5.1.65
-
statement บรรทัดแรก มาจากไหนครับ
-
ในรูปผมไม่ได้ capture ตอนที่มันเกิดปัญหามาให้ดูครับ เพราะตอนนั้นคิดไม่ทันครับ
แต่ผมดูมันมีคำว่า Locked ตรงคำสั่งที่เขียนลงในตาราง replicate_log นะครับ
-
ทำไมถึงคิดว่ามีค่าที่ไม่เหมาะสมครับ และค่าที่คิดว่าไม่เหมาะสมคือ ?
-
ทำไมถึงคิดว่ามีค่าที่ไม่เหมาะสมครับ และค่าที่คิดว่าไม่เหมาะสมคือ ?
---------------------------------------------------------------------------------------------------------------------------
อย่างเช่น = ค่า max_connections=1000 ครับซึ่งโปรแกรมกำหนดมาให้ 1,000 ซึ่งความเป็นจริงแล้ว บางโรงพยาบาลไม่จำเป็นต้องใช้เยอะถึงขนาดนั้นครับผม
-
จากปัญหาของผม ผมสรุปเองเลยละกันได้ดังนี้
1. ปัญหาเกิดจาก ตาราง replicate_log เต็มหรือใหญ่เกินไป จนทำให้ไม่สามารถ insert ข้อมูลเข้าไปได้หรือเข้าไปได้แต่ช้ามากๆ จึงทำให้ระบบทั้งหมดช้าไปด้วย
2. ปกติถ้าตาราง replicate_log ใหญ่โปรแกรมจะมี popup เตือนให้เรา clear แต่เมื่อวานไม่มีเตือน
จึงสันนิษฐานเอาเองว่า ตอนที่ login เข้าไป ตาราง replicate_log มันยังไม่ใหญ่ แต่พอใช้ไปสักพักตารางเกิดใหญ่เลยเกิดการ LOCKED และไม่มีการแจ้งเตือน
3. ตอนนี้จึงหาทางแก้ป้องกันด้วยตัวเอง คือ ให้เข้ามา clear ตาราง replicate_log ทุกๆ 3 วัน
-
เมื่อวานผมก็ไม่ได้แก้อะไรใน my.cnf เลย วันนี้นั่ง monitor ดูตั้งแต่เช้าก็ปกติดีครับ
-
อาการ lock มันเกิดได้หลายสาเหตุครับอยู่ดีๆมันจะไม่เกิดขึ้นมาเองแม้กระทั้งตาราง Replicate_log โตขนาดไหนถ้าไม่ถึงขนาดเต็ม Hdd ก็ไม่น่าจะมีผลกระทบ เท่าที่พอเป็นไปได้คือ ดึงรายงานย้อนหลังเยอะเกินไป , มี software บางอย่างที่มีปัญหาการเชื่อมต่อแล้ว loop back มาที่ server จนหน่วงมากๆ , หรือฐานข้อมูลส่วนใหญ่เป็น myisam ซึ่งฐานชนิดนี้มักจะเกิดอาการ deadlock เนื่องจากประมวลผลการคิวรี่ข้อมูลปริมาณมากๆจนทำงานไม่ทัน