เรามีเซิร์ฟเวอร์ฐานข้อมูล SQL Server 2008 (เกิดขึ้นกับการทำงานภายใต้ MS Failover Clustering แต่ฉันไม่คิดว่าเกี่ยวข้องกับที่นี่)
แอปพลิเคชันของเรารัน Hibernate สำหรับการเข้าถึงฐานข้อมูลและเนื่องจากเราอัปเกรดเมื่อเร็ว ๆ นี้จาก v3.1 เป็น 3.6 เราพบ SQL Server หยุดทำงานเป็นประจำ (ทุก ๆ 24-48 ชั่วโมง แต่บางครั้งก็บ่อยกว่า)
ปัญหาเฉพาะในคำถามน่าจะเกี่ยวข้องกับหน่วยความจำ ก่อนที่เซิร์ฟเวอร์จะล่ม (และจากนั้นรีสตาร์ทอัตโนมัติโดยตัวจัดการคลัสเตอร์ล้มเหลวที่ดูเหมือนว่า) เราได้รับข้อผิดพลาดเหล่านี้:
Error: 701, Severity: 17, State: 130.
There is insufficient system memory in resource pool 'internal' to run this query.
ข้อความ (แต่ปกติ) เป็นครั้งคราวของ
Error: 17300, Severity: 16, State: 1. (Params:). The error is printed in terse mode because there was error during formatting. Tracing, ETW, notifications etc are skipped.
ข้อผิดพลาด: 17312, ความรุนแรง: 16, สถานะ: 1. (พารามิเตอร์ :) ข้อผิดพลาดถูกพิมพ์ในโหมด terse เนื่องจากเกิดข้อผิดพลาดระหว่างการจัดรูปแบบ การติดตาม, ETW, การแจ้งเตือน ฯลฯ ถูกข้ามไป
ฉันยังได้รับข้อผิดพลาดระดับแอปเช่น
java.sql.SQLException: A time out occurred while waiting to optimize the query. Rerun the query.
จากนั้นข้อผิดพลาดที่น่าตื่นเต้นและให้คำแนะนำ:
The query processor ran out of internal resources and could not produce a query plan.
This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions.
Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.
โหลดบนเซิร์ฟเวอร์ไม่เปลี่ยนแปลงดังนั้นจึงไม่มีเหตุผลที่หน่วยความจำจะหมดเมื่อก่อนหน้านี้ไม่ได้ระบุปัญหาที่มีการส่งแบบสอบถามไป
ทีนี้คำถาม - ฉันจะติดตามเคียวรีที่ทำให้เกิดข้อผิดพลาดนี้ได้อย่างไร (และน่าจะเป็นปัญหาทั้งหมด) ดูเหมือนว่าตั้งแต่การอัพเกรดไฮเบอร์เนตของเรามันมีการใช้คิวรีขนาดใหญ่บางอย่างที่ SQL Server และมันก็หัก มันเกิดขึ้นฉันมีความคิดบางอย่างเกี่ยวกับสิ่งที่พวกเขาอาจจะเป็น แต่มันจะดีที่จะสามารถติดตามพวกเขา
ฉันสามารถรันโปรแกรมสร้างโปรไฟล์ของ SQL Server ได้ แต่เมื่อเสร็จแล้ว (และผลิตข้อมูลจำนวนมหาศาล - เป็นฐานข้อมูล OLTP ที่ยุ่ง) ฉันจะกรองเพื่อค้นหาข้อความค้นหาที่มีปัญหาได้อย่างไร
ขอบคุณ!