12

我在 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 帐户的身份每晚以提升的权限运行任务。需要提升的权限,因为我们需要启动和停止服务。

4

1 回答 1

9

这是一个 TFS2010 问题,我猜他们在 2012 年还没有解决。构建系统创建临时文件并且从不清理它们,最终导致失败,因为磁盘已满或因为它们使用有限数量的数字作为唯一 ID 并且用完了可以使用的新 ID(IIRC,它失败了在 65536 个文件,我们通常在我们运行磁盘空间之前很久就点击了)

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

另一种方法可能是每天/每周设置一个小型计划任务,清除几天前的任何临时文件,并在您不知道其他任何内容(如通宵构建)将运行的半夜运行它。

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

这完全取决于您的磁盘填满的速度 - 您可能会发现这是几个月积累的垃圾,而不是在短时间内击中您的东西,在这种情况下,您不需要非常积极的方法来保持运行顺利。

于 2013-03-12T21:06:54.767 回答