โอเคสำหรับทุกคนที่สนใจ
เราแก้ไขปัญหาในคำถามสองสามเดือนที่ผ่านมาเพียงแค่ติดตั้งไดรฟ์ SSD ที่แนบโดยตรงลงในแต่ละเซิร์ฟเวอร์ 3 แห่งและย้ายข้อมูลฐานข้อมูลและไฟล์บันทึกจาก SAN ไปยังไดรฟ์ SSD เหล่านั้น
สรุปเกี่ยวกับสิ่งที่ฉันได้ทำการวิจัยเกี่ยวกับปัญหานี้ (ใช้คำแนะนำจากโพสต์ทั้งหมดที่คำถามนี้) ก่อนที่เราจะตัดสินใจติดตั้งไดรฟ์ SSD:
1) เริ่มรวบรวมตัวนับ PerfMon สำหรับไดรฟ์ต่อไปนี้ที่เซิร์ฟเวอร์ทั้ง 3 ตัว:
Disk F:
เป็นดิสก์แบบลอจิคัลอิง SAN มีไฟล์ข้อมูล MDF
Disk I:
เป็นโลจิคัลดิสก์อ้างอิง SAN มีไฟล์บันทึก LDF
Disk T:
เชื่อมต่อ SSD โดยตรงโดยเฉพาะกับ tempDB
รูปภาพด้านล่างเป็นค่าเฉลี่ยที่เก็บรวบรวมเป็นระยะเวลา 2 สัปดาห์
Disk I: (LDF)
มีขนาดเล็กเช่น IO และ Latency ต่ำมากดังนั้น Disk I: สามารถถูกละเว้น
คุณจะเห็นว่าDisk T: (TempDB)
มี IO ที่ใหญ่กว่าเมื่อเทียบกับDisk F: (MDF)
และมันมี Latency ที่ดีขึ้นมากในเวลาเดียวกัน - 0 ms
เห็นได้ชัดว่ามีบางอย่างผิดปกติกับดิสก์ F: ที่มีไฟล์ข้อมูลอยู่มีความหน่วงแฝงสูงและคิวการเขียนดิสก์เฉลี่ยแม้จะมี IO ต่ำ
2) ตรวจสอบเวลาแฝงของแต่ละฐานข้อมูลโดยใช้แบบสอบถามจากเว็บไซต์นี้
https://www.brentozar.com/blitz/slow-storage-reads-writes/
ฐานข้อมูลที่ใช้งานอยู่ไม่กี่แห่งบนเซิร์ฟเวอร์หลักมีเวลาในการตอบสนองการอ่าน 150-250 ms และเวลาในการเขียนความล่าช้าในการเขียน 150-450 มิลลิวินาที
ไฟล์ฐานข้อมูลหลักและ msdb ที่น่าสนใจมีความล่าช้าในการอ่านสูงสุด 90 ms ซึ่งน่าสงสัย บ่งชี้อีกอย่างหนึ่งว่ามีอะไรผิดปกติกับ SAN
3) ไม่มีการกำหนดเวลาที่เฉพาะเจาะจง
ในระหว่างที่ข้อความ "SQL Server พบการเกิดขึ้น ... " ปรากฏขึ้น
ไม่มีการบำรุงรักษาหรือดิสก์หนัก ETL ทำงานเมื่อข้อความเหล่านั้นถูกบันทึกไว้
4) ตัวแสดงเหตุการณ์ของ Windows
ไม่แสดงรายการอื่น ๆ ที่จะบอกใบ้ปัญหายกเว้น "SQL Server พบการเกิดขึ้น ... "
5) เริ่มตรวจสอบคำค้นหา 10 อันดับแรก
จาก sp_BlitzCache (cpu, อ่าน, ฯลฯ ), และเว้นเมื่อเป็นไปได้
ไม่มีการสืบค้นที่หนักหน่วงอย่างยิ่ง IO ที่จะลดจำนวนข้อมูลและส่งผลกระทบต่อการจัดเก็บอย่างมากถึงแม้ว่าการ
จัดทำดัชนีในฐานข้อมูลจะใช้ได้
6) เราไม่มีทีม SAN
เรามีผู้ดูแลระบบเพียง 1 คนเท่านั้นที่ช่วยในโอกาส
เครือข่ายเส้นทางไปยัง SAN - มันเป็นแบบหลายเครือข่ายแต่ละเซิร์ฟเวอร์ 3 แห่งมีสายเคเบิลเครือข่าย 2 สายที่นำไปสู่สวิตช์แล้วไปที่ SAN และควรจะเป็น 1 กิกะไบต์ / วินาที
7) ไม่มีผลลัพธ์ CrystalDiskMark
หรือผลการทดสอบเปรียบเทียบสมรรถนะอื่น ๆ เมื่อเซิร์ฟเวอร์ติดตั้งดังนั้นฉันไม่ทราบว่าความเร็วควรเป็นเท่าไหร่และไม่สามารถเปรียบเทียบมาตรฐาน ณ จุดนี้เพื่อดูว่าความเร็วในปัจจุบันเป็นอย่างไรเนื่องจากจะส่งผลกระทบต่อการผลิต
8) การติดตั้งเซสชั่นขยายเหตุการณ์ในเหตุการณ์จุดตรวจสอบสำหรับฐานข้อมูลในคำถาม
เซสชัน XE ช่วยในการค้นหาว่าในระหว่างข้อความ "SQL Server พบสิ่งที่เกิดขึ้น ... " จุดตรวจสอบเกิดขึ้นช้ามาก (สูงสุด 90 วินาที)
9) บันทึกข้อผิดพลาดของเซิร์ฟเวอร์ SQL
รายการ "FlushCache" "Saturation" ที่มีอยู่สิ่ง
เหล่านี้ควรปรากฏขึ้นเมื่อเวลาจุดตรวจสอบสำหรับฐานข้อมูลที่กำหนดเกินการตั้งค่าช่วงการกู้คืน
รายละเอียดแสดงให้เห็นว่าจำนวนข้อมูลที่ด่านตรวจพยายามล้างมีขนาดเล็กและใช้เวลานานในการทำให้เสร็จสมบูรณ์และความเร็วโดยรวมประมาณ 0.25 MB / วินาที ... แปลก
10) ในที่สุดภาพนี้แสดงกราฟการแก้ไขปัญหาการจัดเก็บ:
ดูเหมือนว่าเรามี "ปัญหาฮาร์ดแวร์: - ทำงานกับผู้ดูแลระบบ / ผู้จำหน่ายฮาร์ดแวร์เพื่อแก้ไขการกำหนดค่า SAN ที่ผิดพลาด, ไดรเวอร์เก่า / ผิดพลาด, ตัวควบคุม, เฟิร์มแวร์ ฯลฯ "
ในอีกคำถาม "ด่านช้า ... " ด่านช้าและคำเตือน I / O 15 วินาทีในที่เก็บข้อมูลแฟลช
ฌอนมีรายการที่ดีมากของรายการที่ต้องตรวจสอบที่ระดับฮาร์ดแวร์และซอฟต์แวร์เพื่อแก้ไขปัญหา
ดูแลระบบของเราไม่สามารถตรวจสอบทุกสิ่งจากรายการดังนั้นเราจึงเลือกที่จะโยนฮาร์ดแวร์บางอย่างที่ปัญหานี้ - มันไม่แพงเลย
ความละเอียด:
เราสั่งไดรฟ์ SSD 1 TB และติดตั้งลงในเซิร์ฟเวอร์โดยตรง
เนื่องจากเรามีกลุ่มความพร้อมใช้งานไฟล์ข้อมูลฐานข้อมูลที่ถูกย้ายจาก SAN ไปยัง SSD บนแบบจำลองรองจากนั้นจึงล้มเหลวและโอนย้ายไฟล์ในอดีตหลักสิ่งนี้อนุญาตสำหรับการหยุดทำงานทั้งหมดน้อยที่สุด - น้อยกว่า 1 นาที
ขณะนี้แต่ละเซิร์ฟเวอร์มีสำเนาข้อมูล DB ในเครื่องและทำการสำรองข้อมูลเต็ม / diff / log ไปยัง SAN ที่กล่าวถึง
ไม่มีข้อความ "SQL Server พบเหตุการณ์ ... " ในบันทึกเหตุการณ์ของ Windows Viewer Viewer และประสิทธิภาพของการสำรองข้อมูลการตรวจสอบความสมบูรณ์ การสร้างดัชนีการสืบค้น ฯลฯ เพิ่มขึ้นอย่างมาก
ประสิทธิภาพในแง่ของ IO latency มีการปรับปรุงให้ดีขึ้นมากเพียงใดเมื่อเราย้ายไฟล์ฐานข้อมูลไปยัง SSD
ในการประเมินผลกระทบประสิทธิภาพการทำงานที่ใช้ Windows Performance Monitor จะบันทึก 2 สัปดาห์ก่อนการย้ายข้อมูลและ 4 สัปดาห์หลังจากการย้ายข้อมูล:
นอกจากนี้ด้านล่างคือการเปรียบเทียบสถิติเวลาแฝงในระดับ DB (ใช้สถิติไฟล์เสมือนของ SQL Server ที่บันทึกไว้ก่อนและหลังการโยกย้าย)
สรุป
การย้ายจาก SAN ไปยัง SSD ท้องถิ่นที่ต่อพ่วงโดยตรงนั้นคุ้มค่า
มันมีผลกระทบอย่างมากต่อความหน่วงของพื้นที่จัดเก็บและปรับปรุงได้ดีกว่า 90% โดยเฉลี่ย (โดยเฉพาะการปฏิบัติการ WRITE) และเราไม่มี spikes ที่ 20-50 วินาทีที่ IO อีกต่อไป
การย้ายไปยังโลคัล SSD แก้ไขปัญหาประสิทธิภาพการจัดเก็บไม่เพียง แต่ยังรวมถึงความปลอดภัยของข้อมูลที่ฉันกังวล (ถ้า SAN ล้มเหลวเซิร์ฟเวอร์ทั้ง 3 ตัวจะสูญเสียข้อมูลในเวลาเดียวกัน)