我收到了一个新的
Windows 7工作站(取代了旧的Windows 7工作站),并开始遇到从Windows XP计算机访问我的文件共享的错误.
我得到了各种各样的错误(在某些时候它可以正常工作几个小时).一个是:
Not enough storage is available to
process this command
我还看到在试图从共享中访问大量文件的应用程序中打开文件的随机失败.
微软发表了一篇关于该主题的神秘知识库文章,该文章建议增加IRPStackSize以解决问题,而无需解释为什么需要这样做.
我发现在我的工作站和客户机XP机器上增加IRPStackSize似乎会让问题消失.
但是,为什么我需要这样做呢?为什么一台Win7机器有这个问题而另一台没有?它们都位于同一个域中,因此组策略会将相同的设置下推到它们,其中一些我已手动验证.我怎么知道适当的值是多少?或者我应该设置为最大50?
这是让我失望的原因:
“我也看到在试图从共享中访问大量文件的应用程序中打开文件的随机失败.”
Windows使用分层I / O模型,其中驱动程序相互连接并利用底层驱动程序的服务来执行其工作.利用彼此服务的一层驱动程序通常称为“驱动程序堆栈”.
您在特定堆栈中有太多过滤器(每个请求的数量通过防病毒层,基本过滤引擎,ntfs等等),因此默认的IRPStackSize不够大.增加默认值允许所有过滤器都有自己的I / O堆栈位置,每个人都很高兴.这不是一般的Windows问题,而只是系统中某些驱动程序的限制.
考虑在文件服务器上托管使用频繁的文件共享,然后阅读2008 R2 Tuning Guide,特别是关于调整文件服务器性能的部分:http://msdn.microsoft.com/en-us/windows/hardware/gg463392