เรากำลังยุ่งกับการทดสอบระบบ OLTP ที่เราพัฒนาขึ้นใน. NET 4.0 และรัน SQL Server 2008 R2 ที่ด้านหลัง ระบบใช้คิวตัวแทนการบริการเซิร์ฟเวอร์ SQL ซึ่งมีประสิทธิภาพมาก แต่เรากำลังประสบกับแนวโน้มที่แปลกประหลาดขณะประมวลผล
การร้องขอการประมวลผลของ SQL Server ที่อัตราการพองตัวเป็นเวลา 1 นาทีตามด้วยกิจกรรมการเขียนดิสก์ที่เพิ่มขึ้น ~ 20 วินาที กราฟต่อไปนี้แสดงให้เห็นถึงปัญหา
Yellow = Transactions per second
Blue = Total CPU usage
Red = Sqlsrv Disk Write Bytes/s
Green = Sqlsrv Disk Read Bytes/s
ในระหว่างการแก้ไขปัญหาเราลองทำสิ่งต่อไปนี้โดยไม่มีการเปลี่ยนแปลงที่สำคัญในรูปแบบ:
- บริษัท ตัวแทนการเซิร์ฟเวอร์ SQL ที่หยุดทำงาน
- เสียชีวิตเกือบทุกกระบวนการทำงานอื่น ๆ (ไม่มี A / V, SSMS, VS, Windows Explorer และอื่น ๆ )
- ลบฐานข้อมูลอื่นทั้งหมด
- ปิดใช้งานตัวจับเวลาการสนทนาทั้งหมด (เราไม่ใช้ทริกเกอร์ใด ๆ )
- ย้ายออกไปจากวิธีการที่คิวข้อความขับเคลื่อนไปยังการออกแบบการตรวจสอบตารางที่เรียบง่าย / น้ำมันดิบ
- ใช้โหลดที่แตกต่างจากแสงถึงหนัก
- แก้ไขการหยุดชะงักทั้งหมด
ดูเหมือนว่า SQL Server อาจสร้างแคชและเขียนลงดิสก์ตามช่วงเวลาที่กำหนด แต่ฉันไม่พบสิ่งใดทางออนไลน์เพื่อสนับสนุนทฤษฎีนี้
ต่อไปฉันวางแผนที่จะย้ายโซลูชันไปยังสภาพแวดล้อมการทดสอบเฉพาะของเราเพื่อดูว่าฉันสามารถจำลองปัญหาได้หรือไม่ ความช่วยเหลือใด ๆ ในระหว่างกาลจะได้รับการชื่นชมอย่างมาก
อัปเดต 1 ตามที่ร้องขอพร้อมกราฟที่มีCheckpoint Pages / Sec , Page Life Expectancyและตัวนับเวลาแฝงของดิสก์
ดูเหมือนว่าจุดตรวจ (เส้นสีฟ้าอ่อน) เป็นสาเหตุของประสิทธิภาพที่ลดลง (เส้นสีเหลือง) ที่เรากำลังสังเกตอยู่ ^
เวลาในการตอบสนองของดิสก์ค่อนข้างคงที่ในระหว่างการประมวลผลและอายุการใช้งานของหน้ากระดาษดูเหมือนจะไม่มีผลกระทบใด ๆ นอกจากนี้เรายังปรับจำนวน ram สำหรับ SQL Server ซึ่งไม่ได้มีผลกระทบใหญ่ การเปลี่ยนรูปแบบการกู้คืนจากSIMPLE
เป็นFULL
ยังสร้างความแตกต่างเล็กน้อย
อัปเดต 2 โดยการเปลี่ยน "ช่วงเวลาการกู้คืน" ดังนี้เราได้จัดการเพื่อลดช่วงเวลาที่จุดตรวจสอบเกิดขึ้น:
EXEC sp_configure 'show advanced options',1
GO
RECONFIGURE
GO
EXEC sp_configure 'recovery interval', '30'
GO
RECONFIGURE
GO
EXEC sp_configure 'show advanced options',0
GO
RECONFIGURE
ฉันไม่แน่ใจว่านี่เป็นการฝึกที่ไม่ดีใช่ไหม?
FULL
หรือBULK_LOGGED
ยังคงทำงานเหมือนอยู่ในฐานข้อมูลSIMPLE
จนกว่าคุณจะสำรองข้อมูลเต็มรูปแบบ