诊断“没有足够的存储空间来处理此命令”;例外
本文关键字:处理 命令 例外 存储空间 诊断 | 更新日期: 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,但我不确定。