【问题标题】:Diagnose "Not enough storage is available to process this command" exception诊断“没有足够的存储空间来处理此命令”异常
【发布时间】:2014-06-03 19:17:17
【问题描述】:

当我的文件复制过程间歇性失败并出现“System.IO.IOException:没有足够的存储空间来处理此命令”时,我应该捕获哪些信息。异常?

该过程多年来一直成功运行,但在上周一直间歇性失败。 IT 人员向我保证,服务器环境没有任何变化。

文件复制服务是 .Net 3.5 Windows 服务,是为“Any CPU”平台构建的控制台应用程序,在 Windows Server 2008 R2 64 位计算机上以域用户身份运行。它将文件从源共享复制到目标共享。

源共享位于 Windows Server 2008 R2 Standard 64 位 SP1 计算机上。

目标共享位于 Windows Server 2008 Enterprise 32 位 SP2 计算机上。它有超过 1 TB 的可用空间,并且被复制的文件是小型 pdf(大多数约为 18k)。

复制文件的代码行是:

System.IO.File.Copy("\\SourceShare\folder\file.pdf", "\\DestinationShare\folder\file.pdf", true);

当此调用失败并出现“System.IO.IOException:没有足够的存储空间来处理此命令”时。例外,我应该捕获哪些环境信息来帮助我诊断问题?

附:以下是典型异常期间在 catch 块中捕获的一些数字。看到任何暗示“存储空间不足”错误的原因吗?

nonpagedSystemMemorySize64 = 43 kb 
pagedMemorySize64 = 330,680 kb 
pagedSystemMemorySize64 = 248 kb 
peakPagedMemorySize64 = 449,196 kb 
peakVirtualMemorySize64 = 825,024 kb 
peakWorkingSet64 = 442,792 kb 
privateMemorySize64 = 330,680 kb 
virtualMemorySize64 = 818,048 kb 
workingSet64 = 324,360 kb 
totalProcessorTime = 00:11:05.3442650 
userProcessorTime = 00:08:14.1019673 
privilegedProcessorTime = 00:02:51.2422977 
handleCount = 316 
gcTotalMemory = 266,652 kb 

【问题讨论】:

  • “IT 人员向我保证,服务器环境没有任何变化。”不要立即认为他们是对的。你检查权限了吗?
  • 我什么都不做,但可惜我无法访问源机器或目标机器。我唯一的信息来源是异常发生时我能收集到的任何信息。因此我的问题。在任何情况下,问题都是间歇性的;大多数文件复制成功。
  • 执行代码的计算机空间不足吗?
  • 好问题。记录异常时如何在运行时捕获它?

标签: c# windows .net


【解决方案1】:

如果您确定您的服务器上有可用空间并且您绝对确定您拥有正确的权限,那么我建议您检查 IRP Stacksize。

这可能是由于 NonPagedPool 和 PagedPool 利用率很高。

文章展示了如何更改 Windows Server 2003 及以下版本的 IRPStack 大小: http://support.microsoft.com/kb/285089

这也应该适用于 Windows Server 2008,但我不确定。

【讨论】:

  • 您知道在记录异常以诊断 IRP Stacksize 是问题时我需要捕获哪些信息吗?
  • @TomRegan simple-talk.com/sysadmin/general/… 。这是向您展示如何排除故障以及如何检查。
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 2015-01-22
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多