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

时间:2013-03-12 20:41:28

标签: visual-studio tfs tfsbuild 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

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

1 个答案:

答案 0 :(得分:9)

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

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

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

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

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