系统进程中的无效句柄太多

系统进程中的无效句柄(Windows Server 2008 R2 x64)增加了。 数额大约是每周100万。

根据Process Explorer的处理types是文件。 从任务pipe理器看来,内存没有分配给任何进程,但是图表显示了高(并且在增长)的物理内存使用情况。

如何避免或释放无效的系统句柄?

你有没有打开离线文件? 您可以在控制面板>同步中心>禁用脱机文件(在左侧)中禁用它们。 也许服务器试图下载文件的脱机副本,所以它不能正确地closures句柄。 只是在黑暗中的一枪。

我还没有find根本原因,但我想清楚如何清理它。

当我复制其中一个文件来分析它时,我发现无效句柄被“重用”或“刷新”并正确closures。 似乎打开,复制,删除文件上的操作修复句柄。 所以我创build了powershell脚本,首先使用util Handle v3.51获取句柄列表并打开受影响的文件。 第一次运行后,手柄数量减less,物理内存使用量也开始减less,几次运行后,看起来没问题。 清理计划每晚计划。

$handlesLog = .\handle.exe -p 4 # 4 is System process id foreach ($line in $handlesLog) { if ($line -match "<here is the pattern of affected files>") { $fileToCopy = <full path to the file> if ([System.IO.File]::Exists($fileToCopy)) { try { $fileStr = New-Object System.IO.FileStream($fileToCopy,[System.IO.FileMode]::Open, [System.IO.FileAccess]::Read) } finally { $fileStr.Close() $fileStr.Dispose() } } } }