Windows文件共享上每个文件夹的最大(实用)文件?

我支持将文件存储在Windows Server 2003 SP2文件共享中的内部应用程序。 由于目前如何configuration存储文件,一个文件夹中有大约116,000个文件(另一个大约65,000个文件夹,其他文件夹的数量较less,但每个文件夹仍有数千个文件夹)。 写入文件的应用程序变得非常慢。

文件的布局是可以configuration的,所以我试图想出一个更好的计划。 有没有人有任何经验,每个文件夹SMB可以处理多less项目开始变得无法使用? 在这种情况下,它已经很慢了一段时间,但直到文件夹超过100,000个文件才开始变得不可忍受。

它更依赖于带宽和延迟(尤其是延迟),而不是用于枚举目录的algorithm中的文件数和缩放比例。 没有“幻数”,我想是我所说的。

SMB协议是可怕的,因为需要大量的往返旅程。 例如,这个文件的数量是延迟的两倍,比缓慢两倍还多。

您已经为LAN错误地进行了基准testing,networking基础架构的延迟以及服务器计算机的IO子系统延迟。 你显然find了一个“魔术数字”。 我会把这个目录削减,直到性能变好。 没有别的办法

埃文的权利,没有神奇的数字。 这取决于应用程序和服务器。 升级到服务器2008将有所帮助,而且这是我首先要做的事情,只要客户端使用SMBv2或更好。 我有股份,有50万个文件浏览像垃圾,但由于用户只使用提供的直接path,工作正常。 在同一台服务器上,我有100,000个文件的共享,用户没有问题。

部分相关:

停止“上次访问更新”

每当您访问NTFS驱动器上的文件夹时,Windows XP都会使用上次访问date的时间戳来更新该文件夹和所有子文件夹。 有时候,这可能会降低Windows的性能。

要改变这个,打开REGEDIT(开始 – >运行 – >'regedit')并导航到HKEY_LOCAL_MACHINES \ System \ CurrentControlSet \ Control \ FileSystem

创build一个名为“NtfsDisableLastAccessUpdate”的新的DWORD值(右键单击 – > new – > DDWORD Value),并将该值设置为“1”

禁用不必要的命名约定

对于每个创build的文件,windows xp都使用一个额外的名称来兼容MSDOS:8个字符的名称后跟一个“。”,然后是3个字符的扩展名。 如果你不打算使用DOS软件,这是浪费内存。

要改变这个,打开REGEDIT
导航到HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ FileSystem

将NtfsDisable8dot3NameCreation键的值更改为“1”

(取自http://basiccoms.blogspot.com/2008/08/windows-xp-performance-tweaking-guide.html