Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

หนึ่งใน ไฟล์เซิร์ฟเวอร์ ที่รัน Windows Server 2008 R2 พบปัญหา RAM ใช้สูงมาก ส่งผลต่อประสิทธิภาพเซิร์ฟเวอร์และแอปพลิเคชัน 原因คือหน่วยความจำถูกครอบครองโดย System File Cache ที่เก็บ Metadata ของระบบไฟล์ ปัญหานี้อาจส่งผลต่อไฟล์เซิร์ฟเวอร์ทุกตัวที่มีไฟล์จำนวนมากและถูกเข้าถึงโดยผู้ใช้ สำคัญที่สุดสำหรับ Windows x64 ที่ขนาด Metadata ในหน่วยความจำอาจใหญ่เกือบขนาด RAM ทั้งหมด

โหลด RAM สูงบน Windows File Server

อาการ: ใน Task Manager พบว่า Physical Memory ใช้งาน 95-99%

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

ในแท็บ Processes ไม่มีกระบวนการใดใช้หน่วยความจำสูงผิดปกติ รวมค่า RAM ของทุกโปรเซสก็ไม่ถึง 50% ของ RAM จริง แล้ว RAM ถูกใช้ไปไหน?

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

ข้อมูลจริงของการใช้ RAM ได้จาก 유틸ิตี้เล็กๆ RAMMap (โดย Mark Russinovich) ดาวน์โหลดและรัน RAMMap.exe ด้วยสิทธิ์ Admin ในแท็บ Use Counts พบว่า Metafile ใช้ RAM มากที่สุด (ในกรณีนี้ 11 จาก 25 GB)

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

Metafile ใน Windows คืออะไร?

Metafile เป็นส่วนหนึ่งของ System Cache ที่เก็บ NTFS Metadata ใช้เพื่อเพิ่มประสิทธิภาพระบบไฟล์เมื่อเข้าถึงไฟล์ NTFS Metadata รวมข้อมูล MFT (Master File Table) สำหรับแต่ละไฟล์/โฟลเดอร์ที่ผู้ใช้เข้าถึง จะสร้างบล็อกอย่างน้อย 1 KB ใน Metafile (ระเบียนแอตทริบิวต์แต่ละไฟล์ 1 KB และแต่ละไฟล์มีอย่างน้อย 1 แอตทริบิวต์) ดังนั้นบนไฟล์เซิร์ฟเวอร์ที่มีไฟล์มาก ขนาด Metafile (NTFS Cache) อาจเกินหลายสิบ GB

ไม่สามารถปิด Cache นี้หรือจัดการด้วยเครื่องมือ Built-in ของ Windows ได้ วิธีหนึ่งคือเพิ่ม RAM แต่ไม่ได้ทำได้ทุกครั้ง

รีสตาร์ทเซิร์ฟเวอร์เพื่อล้างหน่วยความจำได้ แต่ Metafile จะเติบโตกลับมาเร็วมาก

ตัวอย่าง: ประมาณขนาด MFT ด้วยเครื่องมืออีกตัวของ Russinovich – ntfsinfo ในกรณีนี้ MFT บนดิสก์ 2 TB มีขนาด 13 GB

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

วิธีล้าง Metafile เร็วๆ

RAMMap ช่วยล้างหน่วยความจำจากขยะ MFT ได้โดยไม่ต้องรีสตาร์ทเซิร์ฟเวอร์ เลือก Empty -> Empty System Working Set ในเมนู

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

หลังจากนั้น ขนาด Metafile ใน RAM ลดลงสิบเท่า และ % RAM usage ลดจาก 95% เหลือ 26%

แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

ข้อเสียหลัก: การล้างเป็น Manual ไม่สามารถทำอัตโนมัติได้

Dynamic Cache Service เพื่อจัดการ File Cache

วิธีแก้รากเหวี่ยวกว่าคือติดตั้ง Dynamic Cache Service (https://www.microsoft.com/en-us/download/details.aspx?id=9258) บริการนี้จัดการพารามิเตอร์ Dedicated MFT Cache ผ่าน System APIs

สำคัญ ใช้วิธีนี้เฉพาะเมื่อเกิดปัญหาตามอธิบาย การติดตั้งไม่ใช่โซลูชันสากลสำหรับสาเหตุอื่นของ RAM สูง

การติดตั้ง DynCache ค่อนข้างง่าย (มีคำแนะนำละเอียดในไฟล์)

  • คัดลอก DynCache.exe ไป %SystemRoot%\System32
  • สร้าง DynCache service ด้วยคำสั่ง: sc create DynCache binpath= %SystemRoot%\System32\DynCache.exe start= auto type= own DisplayName= "Dynamic Cache Service" แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2
  • นำเข้า DynCache.reg เข้า Registry (มีค่า Default)
  • เปลี่ยนค่าคีย์รีจิสทรี: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters
    1. MaxSystemCacheMBytes: 4096 (dec) – ขนาด Cache สูงสุด (MB)
    2. MinSystemCacheMBytes: 100 (dec) – ขนาด Cache ต่ำสุด (MB) แก้ปัญหา RAM สูงจาก Metafile บน Windows Server 2008 R2

    หมายเหตุ ตั้งค่าเหล่านี้ตามขนาด RAM, โหลดเซิร์ฟเวอร์, ประสิทธิภาพที่ต้องการ โดยทั่วไปไม่แนะนำตั้ง Cache เกินครึ่งหนึ่งของ Physical RAM หลังเปลี่ยนค่า ไม่ต้องรีสตาร์ท DynCache เพราะใช้ได้ทันที

  • เริ่มบริการ: sc start DynCache

ในกรณีนี้ หลังติดตั้ง DynCache การใช้หน่วยความจำโดย Metafile ไม่เกิน 4 GB ที่ตั้งไว้ ผู้ใช้ไม่แจ้งปัญหาประสิทธิภาพบนไฟล์เซิร์ฟเวอร์