Windows Server - “没有足够的可用存储空间错误”

eas*_*wee 6 windows iis hosting dfs

我们有两台在网络花园中运行的 IIS 7 服务器。每个服务器上都有每个站点的副本。文件使用 DFS 同步(仅限源文件)。图像和大文件使用共享位于不同的服务器上。

每周至少有几次,我们"Not enough storage available"在读取任何文件或处理服务器代码时会出错。IIS服务器无法将路径映射到本地磁盘(不仅仅是与DFS同步的磁盘),加载组策略权限似乎也有问题(我们收到各种错误)并且我们无法在任何服务器上打开任何共享在局域网。从其他自定义应用程序读取文件时也会出现 I/O 错误。在此下降期间的磁盘速度和延迟都可以。如果我们尝试复制文件或测试驱动器速度,通常会奏效。有时,我们甚至无法运行“我的电脑”或任何其他软件(例如性能监视器)。它只能在我们“以管理员身份运行”时启动。每个磁盘上都有足够的可用存储空间。

大多数站点停止工作(但不是全部)。服务器重启后,一切正常几天,然后问题再次出现。

服务器使用 VMWARE 进行虚拟化,每台服务器上有 50 个 IIS 池(有些是内存受限的)和大约 200 个运行站点。两台服务器都有 16GB 的 RAM(仅使用了大约 80%)。CPU 始终在 30 - 60% 之间。

我们尝试将 IRPStackSize 注册表属性更改为更高的数字,但没有任何更改。问题依然存在。我们尝试禁用防病毒 (NOD) – 没有成功。

任何提示?也许我们接近 IIS 限制(对许多站点/池)?也许 32 位操作系统和 16GB 内存?也许有一些“秘密”注册表设置...我们认为每天重启不是长期解决方案。

小智 7

Not enough storage available错误与磁盘存储无关。这是关于内部存储器。

这个错误很容易重现。只需选择一堆大文件(图像或 DLL 或其他),右键单击并使用打开方式选项用记事本打开它们。这应该吃掉内部内存的分配。当交换文件接近其最大容量时,随机服务将开始记录Not enough storage available到事件日志。通常,它们会一直处于故障状态,直到重新启动。

我在自己的服务中遇到了这个问题,并且不得不添加一些额外的错误处理以在线程上发生此类错误时强制服务进程退出。这样,服务将以自动方式重新启动和恢复。

IIS 通常可以很好地处理这种情况(与一般的 Windows 服务相比)。

为了找到导致这种情况的进程(通常是内存泄漏),您应该使用性能监视器mmc 管理单元,并记录正在运行的进程的内存使用情况(在决定记录什么时要有所选择,因为这些日志文件可能会变得非常大)。另一种选择是使用xperf,它实际上更适合调试低级驱动程序等,但在这种情况下也很有帮助。

如果结果是 w3wc 服务占用了所有内存,您可以使用诸如 Microsoft 全新的Application Insights(或任何其他 IIS 监控工具)之类的工具来确定哪个应用程序池、Web 应用程序或网站负责. 然后您可以限制该特定池的内存使用,或安排它正常回收。

IIS 通常可以以一种没人会注意到的方式循环池(取决于应用程序处理会话的方式,如果它是自定义构建的,则在刷新所有静态变量时您可能会丢失会话)。通常,像这样的解决方法就足够了,并且可以避免对错误进行昂贵的修复(免责声明:这不是解决问题的“我的风格”,但大多数利益相关者都喜欢这种方式)。


Ent*_*zer 5

具有 16Gb ram 的 32 位操作系统将有效地使 12Gb 闲置。绝对应该考虑升级到 64 位操作系统。

使用 PAE 开关(物理地址扩展)可以提供临时修复。

有关操作系统可以与 PAE 开关信息一起使用的最大内存的信息,请查看:

http://msdn.microsoft.com/en-us/library/windows/hardware/gg487503.aspx

问候,

  • 没有“考虑”,基线。每个在 2013 年运行 32 位操作系统的人都应该重新考虑,而没有真正好的理由(有驱动程序问题的特殊硬件)。他的职业生涯,可能。 (2认同)