构建机器上的大型TFSUser\AppData\Local\Temp目录

Cor*_*lin 12 tfs tfsbuild visual-studio tfs2012

我在Windows Server 2008 R2上使用TFS 2012 Update 1.我们在TFSUser帐户下运行TFS构建.有一天,我们的构建机器上的空间不足.经过调查,我发现文件夹C:\ Users\TFSUser\AppData\Local\Temp中有超过50GB的文件,有些可以追溯到2012年10月.没有一个文件过大,但它们没有似乎得到了清理.

今天调查显示,在自动构建期间,文件夹会被写入很多内容.为什么这些文件没有得到清理,我该怎么做才能确保我的构建机器不会因为这个问题而再次耗尽空间?

更新2013-03-13
我创建了一个小型PowerShell脚本,每晚运行以删除临时目录内容.这是powershell脚本:

Stop-Service TFSBuildServiceHost.2012
Remove-Item Drive:\Path\To\TFSUser\AppData\Local\Temp\* -recurse -exclude Build*
Start-Service TFSBuildServiceHost.2012
Run Code Online (Sandbox Code Playgroud)

我的任务是每晚以提升的权限运行作为TFSUser帐户.需要提升权限,因为我们需要启动和停止服务.

Jas*_*ams 9

这是一个TFS2010问题,我猜他们还没有在2012年解决.构建系统创建临时文件并且永远不会清理它们,最终导致故障,因为磁盘已满或者因为它们使用有限数量的数字来表示唯一ID并且耗尽了可以使用的新ID(IIRC,它会失败)在65536个文件中,我们通常在运行磁盘空间之前就已经命中了这个文件)

解决方案是定期删除临时文件.我一年只手动做2-4次.最安全的方法可能是禁用构建代理,然后清除临时文件夹,然后重新启用代理(如果服务器已运行数月,则同时重启服务器可能不是一个坏主意).

另一种方法是每天/每周设置一个小的计划任务,清除任何早于几天的临时文件,并在半夜运行它时,你什么都不知道(如夜间版本)将运行.

或者,如果您的服务器每年重启几次,那么在构建代理启动之前清除临时文件夹的启动脚本可能是一个干净整洁的解决方案.

这一切都取决于你的磁盘填满的速度 - 你可能会发现它已经累积了几个月而不是在短时间内击中你的东西,在这种情况下你不需要采取非常积极的方法来保持运行顺利.

  • 原来我也很健忘:-) ...我今天早上刚刚检查了我们的服务器,我设置了一个计划任务,每周六晚上 11:30 运行,并运行一个 2 行批处理脚本:` del /F /S /Q "C:\Documents and Settings\TFSSERVICE\Local Settings\Temp\*.*"` `del /F /S /Q "C:\WINDOWS\Temp\*.*"` (2认同)