诊断“没有足够的存储空间来处理此命令”;例外

本文关键字:处理 命令 例外 存储空间 诊断 | 更新日期: 2023-09-27 18:06:24

当我的文件复制过程间歇性失败时,我应该捕获哪些信息?IOException: Not enough storage is available to process this command."异常?

这个进程已经成功运行了好几年了,但是在上周断断续续地失败了。IT人员向我保证服务器环境没有任何变化。

文件复制服务,一个。net 3.5 Windows服务,是一个控制台应用程序构建的"任意CPU"平台,在Windows Server 2008 R2 64位机器的域用户的身份下运行。它将文件从源共享复制到目标共享。

源共享在Windows Server 2008 R2 Standard 64位SP1机器上。

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

复制文件的代码行是:

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

当调用失败时,使用"System.IO. net "IOException: Not enough storage is available to process this command."异常,我应该捕获哪些环境信息来帮助我诊断问题?

注:下面是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 

诊断“没有足够的存储空间来处理此命令”;例外

如果你确定你的服务器上有空闲空间,并且你绝对确定你有正确的权限,那么我建议你检查IRP堆栈大小。

这可能是由于NonPagedPool和PagedPool的高利用率造成的。

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

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