การเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันและไดรฟ์เครือข่ายใน 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



