ค้นหาเว็บไซต์

การเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันและไดรฟ์เครือข่ายใน Windows ช้าลง


ผู้ใช้ของเราบ่นเกี่ยวกับประสิทธิภาพเครือข่ายที่ช้ามากเมื่อเปิดหรือบันทึกไฟล์ไปยังโฟลเดอร์แชร์บนเครือข่ายใน Windows เมื่อผู้ใช้เปิดโฟลเดอร์ที่ใช้ร่วมกันผ่านเส้นทาง UNC หรือผ่านอักษรระบุไดรฟ์ (หากโฟลเดอร์ที่ใช้ร่วมกันถูกแมปเป็นไดรฟ์เครือข่าย) เนื้อหาจะแสดงภายใน 10-60 วินาทีเท่านั้น เมื่อสร้างไฟล์ใหม่ในโฟลเดอร์เครือข่าย ไฟล์เหล่านั้นจะไม่ปรากฏขึ้นทันทีเช่นกัน แต่จะมีการหน่วงเวลานานหลังจากผ่านไป 3-4 นาที (แม้ว่าคุณจะอัปเดตเนื้อหาของโฟลเดอร์ด้วย

F5

สำคัญ). อย่างไรก็ตาม หากคุณระบุชื่อไฟล์แบบเต็มด้วยตนเองผ่านเส้นทาง UNC (

\\lon-file-srv1\public\new_file.docx

) จะเปิดขึ้นแม้ว่าจะมองไม่เห็นใน File Explorer

Windows ใช้คอมโพเนนต์ Network Redirector พิเศษเมื่อเข้าถึงไฟล์ที่ใช้ร่วมกันและทรัพยากรเครือข่ายอื่นๆ บนคอมพิวเตอร์ระยะไกล เริ่มต้นด้วย SMB v2.x (ดูตารางเวอร์ชันโปรโตคอล Server Message Block) Network Redirector ใช้กลไกการแคชเมื่อเข้าถึงโฟลเดอร์และไฟล์ที่ใช้ร่วมกันผ่านเครือข่าย ซึ่งช่วยลดการรับส่งข้อมูลและจำนวนคำขอ SMB ระหว่างไคลเอนต์และเซิร์ฟเวอร์ (โดยเฉพาะอย่างยิ่งมีผลในเครือข่ายที่ช้าและไม่น่าเชื่อถือ) ตามค่าเริ่มต้น แคชนี้จะถูกล้างทุกๆ 10 วินาที

หากคุณประสบปัญหาการเข้าถึงเครือข่ายที่ใช้ร่วมกันบนอุปกรณ์ไคลเอ็นต์ Windows ได้ช้า คุณสามารถลองปิดใช้งานการแคชข้อมูลเมตา SMB ในฝั่งไคลเอ็นต์หรือในการตั้งค่าโฟลเดอร์ที่ใช้ร่วมกัน

คุณสามารถปิดใช้งานการแคช SMB ได้ในการตั้งค่าโฟลเดอร์ที่ใช้ร่วมกัน เปิดคุณสมบัติของโฟลเดอร์ที่ใช้ร่วมกัน และไปที่แท็บ การแบ่งปัน -> การแบ่งปันขั้นสูง -> การแคช เลือกตัวเลือกที่สอง “ไม่มีไฟล์หรือโปรแกรมจากโฟลเดอร์ที่ใช้ร่วมกันที่พร้อมใช้งานแบบออฟไลน์ ”

หรือใช้คำสั่ง PowerShell จากโมดูล SMBShare ในตัว:

Set-SMBShare -Name MySharedDocs -CachingMode None

การดำเนินการนี้จะปิดทั้งการแคชและการเข้าถึงโฟลเดอร์แชร์นี้แบบออฟไลน์ (ดูบทความเกี่ยวกับการใช้ไฟล์ออฟไลน์ใน Windows)

มีพารามิเตอร์รีจิสทรีสามตัวที่จัดการการตั้งค่าแคชของโฟลเดอร์ที่ใช้ร่วมกันบนเครือข่ายในฝั่งไคลเอนต์ SMB Microsoft ระบุว่าค่าเริ่มต้นสำหรับตัวเลือกรีจิสทรีเหล่านี้ให้ประสิทธิภาพที่ดีที่สุดสำหรับสภาพแวดล้อมส่วนใหญ่ การตั้งค่าแคช SMB อยู่ภายใต้คีย์รีจิสทรี HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters

  • DirectoryCacheLifetime คืออายุการใช้งานของแคชข้อมูลเมตาของโฟลเดอร์ที่ใช้ร่วมกัน (10 วินาทีตามค่าเริ่มต้น)

  • FileNotFoundCacheLifetime - แคชตอบกลับ “ไม่พบไฟล์ ” (5 วินาที);

  • FileInfoCacheLifetime - เวลาในการเก็บแคชด้วยข้อมูลไฟล์ (10 วินาที)

คุณสามารถค้นหาข้อมูลเกี่ยวกับการตั้งค่ารีจิสทรีเหล่านี้ได้ในบทความเกี่ยวกับการปรับการตั้งค่าเซิร์ฟเวอร์ไฟล์ของ Windows ให้เหมาะสม: https://docs.microsoft.com/en-us/windows-server/administration/performance-tuning/role/file-server/

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

ในบางกรณี กลไกการแคชข้อมูลในโฟลเดอร์ SMB ทำงานไม่ถูกต้อง (ส่วนใหญ่มักจะเกิดขึ้นกับโฟลเดอร์/ไดรฟ์เครือข่ายที่มีไฟล์และโฟลเดอร์หลายพันไฟล์) ในกรณีนี้ ผู้ใช้อาจพบความล่าช้าอย่างมากเมื่อเปิด ดู และสร้างไฟล์ในโฟลเดอร์ที่ใช้ร่วมกัน

คุณสามารถปิดใช้งานการแคชสำหรับโฟลเดอร์ SMB ในการดำเนินการนี้ ให้สร้างพารามิเตอร์ DWORD ใหม่ภายใต้คีย์รีจิสทรี HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters ด้วยชื่อ DirectoryCacheLifetime และค่า 0 นอกจากนี้ ตั้งค่าของพารามิเตอร์ FileInfoCacheLifetime และ FileNotFoundCacheLifetime เป็น 0 คุณสามารถสร้างพารามิเตอร์รีจิสทรีนี้โดยใช้

regedit.exe

หรือด้วย cmdlet PowerShell ItemProperty ใหม่:

$regpath= "HKLM:\System\CurrentControlSet\Services\LanmanWorkstation\Parameters"
$Name1 = "DirectoryCacheLifetime"
$Name2 = "FileInfoCacheLifetime"
$Name3 = "FileNotFoundCacheLifetime"
New-ItemProperty -Path $regpath -Name DirectoryCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileInfoCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null
New-ItemProperty -Path $regpath -Name FileNotFoundCacheLifetime -Value 0 -PropertyType DWORD -Force | Out-Null

คุณต้องรีสตาร์ทคอมพิวเตอร์เพื่อให้การตั้งค่ามีผล หากจำเป็นต้องใช้พารามิเตอร์เหล่านี้กับคอมพิวเตอร์หลายโดเมน คุณสามารถใช้ GPO เพื่อปรับใช้การตั้งค่ารีจิสทรี

การปิดใช้งานการแคชโฟลเดอร์เครือข่ายจะเพิ่มการรับส่งข้อมูลเครือข่ายและลดประสิทธิภาพของเซิร์ฟเวอร์ไฟล์

คุณยังสามารถใช้ Set-SmbClientConfiguration cmdlet เพื่อปรับแต่งไคลเอ็นต์ SMB ได้อย่างละเอียด:

Set-SmbClientConfiguration -DirectoryCacheLifetime 0
Set-SmbClientConfiguration -FileInfoCacheLifetime 0
Set-SmbClientConfiguration -FileNotFoundCacheLifetime 0

คุณสามารถแสดงรายการการตั้งค่าการแคชปัจจุบันสำหรับไคลเอนต์ Windows SMB ด้วย PowerShell:

Get-SmbClientConfiguration| select *cache*
DirectoryCacheEntriesMax : 16
DirectoryCacheEntrySizeMax : 65536
DirectoryCacheLifetime : 0
FileInfoCacheEntriesMax : 64
FileInfoCacheLifetime : 0
FileNotFoundCacheEntriesMax : 128
FileNotFoundCacheLifetime : 0

หลังจากนั้น การเปลี่ยนแปลงทั้งหมดในการแชร์จะแสดงบนไคลเอนต์ทันที (เนื้อหาของโฟลเดอร์จะถูกรีเฟรชทุกครั้งที่มีการเข้าถึงและไม่ได้ใช้แคชในเครื่อง)

มีเหตุผลอื่นๆ อีกหลายประการที่ทำให้เครือข่ายของโฟลเดอร์ที่ใช้ร่วมกันมีประสิทธิภาพต่ำ หรือเมื่อเนื้อหาของโฟลเดอร์อาจปรากฏช้า:

  • การเปิดใช้งานตัวเลือก “Access-based Enumeration (ABE)” ในการตั้งค่าโฟลเดอร์ที่ใช้ร่วมกันอาจทำให้การอัปเดตรายการไฟล์ในโฟลเดอร์ที่ใช้ร่วมกันมีวัตถุจำนวนมากช้าลง

  • คุณอาจพบความเร็วเครือข่ายช้าบนเครื่องเสมือน Hyper-V ที่ทำงานบน Windows Server 2019 (เทียบกับ Windows Server 2016/2012R2)

  • ลองปิดใช้งานโปรโตคอล NetBIOS เดิมในคุณสมบัติของการเชื่อมต่อ TCP/IPv4 บนอุปกรณ์ที่เข้าร่วมโดเมน (

    ncpa.cpl

    -> เปิดการตั้งค่า TCP/IPv4 ของอะแดปเตอร์เครือข่าย และเลือก ปิดใช้งาน NetBIOS ผ่าน TCPIP บนแท็บ WINS)

  • ลองรีเซ็ตเครือข่ายและการตั้งค่าสแต็ก TCP/IP บนอุปกรณ์ไคลเอนต์ Windows ใน Windows 10+ คุณสามารถใช้ตัวเลือก รีเซ็ตเครือข่าย ในแผงการตั้งค่าหรือใช้คำสั่ง:

    netsh int ip reset

บทความที่เกี่ยวข้อง