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