ข้อความ FlushCache ที่ปรากฏในบันทึกในเวลาที่กำหนด


22

เมื่อไม่นานมานี้เรามีปัญหาเกี่ยวกับประสิทธิภาพของฐานข้อมูลจำนวนมากและฉันพยายามที่จะดูว่าฉันสามารถหาสาเหตุได้หรือไม่ เราไม่มี DBA (ฉันเป็นผู้พัฒนาซอฟแวร์) ดังนั้นฉันจึงเป็นคนชักปีกและสิ่งที่ฉันพบว่าการอ่านออนไลน์เช่นภาษาต่างประเทศให้ฉัน

เราได้รีสตาร์ท SQL Server ทุกเช้าเพราะนั่นเป็นวิธีเดียวที่จะเปิดให้บริการในระหว่างวันทำงาน ฉันสังเกตว่าทุกเช้าประมาณตี 5 เราเริ่มได้รับข้อความนี้ทุกสองนาทีในบันทึก:

FlushCache: ทำความสะอาด 11848 bufs ด้วย 7432 เขียนใน 97168 ms (หลีกเลี่ยงสกปรก 8139 bufs ใหม่) สำหรับ db 9: 0

เป้าหมายสุดท้ายที่โดดเด่น: 4, avgWriteLatency 32

ปริมาณงานเฉลี่ย: 0.72 MB / วินาที, ความอิ่มตัวของ I / O: 11635, บริบทสวิตช์ 18849

ตัวเลขแตกต่างกันในแต่ละครั้งแน่นอน แต่มันเป็นข้อความเดียวกันซ้ำไปซ้ำมาในรูปแบบนั้นจนกว่าฉันจะรีสตาร์ทเซิร์ฟเวอร์ ฉันไม่แน่ใจว่าจะตีความสิ่งนี้อย่างไรฉันได้ลองใช้ Google เกี่ยวกับเรื่องนี้และสิ่งที่ฉันรวบรวมได้ทั้งหมดนั่นก็หมายความว่าอาจมีบางอย่างผิดปกติกับ I / O และสิ่งที่ใช้เวลานานเกินกว่าที่ควรจะเป็น เมื่อเร็ว ๆ นี้เราเปลี่ยนมาใช้ SSD ดังนั้นฉันไม่คิดว่ามันจะเป็นปัญหาการเขียน

ใครช่วยแสงนี้บ้าง


ขอให้เรายังคงอภิปรายนี้ในการแชท
eddie_cat

คำตอบ:


29

ข้อความ FlushCache ในบันทึกข้อผิดพลาดเกิดจากการบันทึกจุดตรวจสอบและในกรณีนี้โดยจุดตรวจสอบแบบยาว (ซึ่งถูกกำหนดเป็นจุดตรวจที่ใช้เวลานานกว่าช่วงเวลาการกู้คืน) ไม่ว่าจะบันทึกหรือไม่ก็ตามพฤติกรรมนั้นแตกต่างกันไปในช่วงปี 2012 และ 2012+ ก่อน SQL Server 2012 เพื่อรับการบันทึกจุดตรวจคุณต้องเปิดการตั้งค่าสถานะการติดตาม (T3504) แต่การเริ่มต้นใน SQL Server 2012 นั้นข้อความจะถูกบันทึกโดยค่าเริ่มต้นเมื่อตรวจสอบจุดตรวจสอบที่ยาว

ทีนี้สำหรับคำถามที่ว่า "มันแย่จริง ๆไหม" คุณต้องเริ่มดูตัวเลขเหล่านี้ตามบริบทของพวกเขา คุณใช้เวลา 97+ วินาทีในการล้างบัฟเฟอร์สกปรกประมาณ 93 MB ดูเหมือนว่านี่อาจเป็นส่วนผสมของ data churn จำนวนมาก (ในระหว่างจุดตรวจสอบตัวจริงบัฟเฟอร์ประมาณ 64 MB ก็สกปรก) และพื้นที่จัดเก็บที่ไม่ได้ปรับเปลี่ยนข้อมูลและ / หรือส่วนที่เหลือ ของเวิร์กโหลด I / O

สิ่งที่ฉันจะทำคือตรวจสอบความสมบูรณ์ของระบบย่อยที่เก็บข้อมูลของคุณดูที่การรอและรับภาพรวมประสิทธิภาพของอินสแตนซ์ ลองดูที่ดิสก์ตรรกะ perfmon เคาน์เตอร์และดูสิ่งที่ผมโดยรวม / O ปั่นอยู่กับการส่งผ่าน , ความล่าช้าและIOPS มันจะช่วยให้คุณวาดภาพที่ชัดเจนขึ้นว่าดิสก์ทำงานอย่างไร หากคุณมีความสามารถในการกำหนดมาตรฐานพื้นที่เก็บข้อมูลของคุณหากคุณยังไม่ได้ทำการอ้างอิงพื้นฐานคุณควรจะเห็นว่าไดรฟ์ข้อมูลเหล่านี้มีปัญหาอะไร ( SQLIOเป็นเครื่องมือที่ยอดเยี่ยมสำหรับสิ่งนั้น) และสิ่งที่พวกเขากำลังทำอยู่ตอนนี้ มีเกณฑ์มาตรฐานเมื่อไดรฟ์ข้อมูลถูกยืนขึ้นเพื่อเปรียบเทียบกับมาตรฐานปัจจุบัน)

นี่เป็นบทความที่ดีที่อธิบายถึงข้อความนี้ - มันทำงานอย่างไร: เมื่อใดที่ข้อความ FlushCache จะถูกเพิ่มลงในบันทึกข้อผิดพลาดของเซิร์ฟเวอร์ SQL

แก้ไข : อ่านคำถามของคุณอีกครั้งฉันต้องคิดถึงความคิดเห็นนี้:

ฉันสังเกตเห็นว่าทุกเช้าประมาณตี 5 เราเริ่มได้รับข้อความนี้

ดูสิ่งที่เกิดขึ้นบนพื้นที่เก็บข้อมูลของคุณในเวลานี้ตามคำแนะนำด้านบน ฟังดูเหมือนการดำเนินงานตามตารางเวลาของตำราเรียนที่ต้องเสียค่าใช้จ่ายในการจัดเก็บทำให้ประสิทธิภาพของจุดตรวจสอบต้องทนทุกข์ทรมานและ "ยาวนาน"


2
SQLIO ได้รับการแก้ไขเกินโดย Diskspd.exe ตามลิงก์ที่ให้ไว้ นี่คือลิงค์ไปยัง Diskspd.exe: gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
Tim Coker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.