构建机器上的大型 TFSUserAppDataLocalTemp 目录 [英] Large TFSUserAppDataLocalTemp Directory on Build Machine

查看:26
本文介绍了构建机器上的大型 TFSUserAppDataLocalTemp 目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Windows Server 2008 R2 上使用 TFS 2012 Update 1.我们在帐户 TFSUser 下运行 TFS 构建.前几天,我们的构建机器上的空间用完了.经过调查,我发现文件夹 C:UsersTFSUserAppDataLocalTemp 中有超过 50GB 的文件,其中一些可以追溯到 2012 年 10 月.没有一个文件过大,但它们没有似乎总是被清理干净.

I'm using TFS 2012 Update 1 on Windows Server 2008 R2. We have the TFS build running under the account TFSUser. The other day we ran out of space on our build machine. Upon investigation I found that the folder C:UsersTFSUserAppDataLocalTemp had over 50GB of files in it, some dating back as far as October of 2012. None of the files are overly large, but they don't ever seem to get cleaned up.

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

Investigating today shows that folder gets written to a lot during an automated build. Why aren't these files getting cleaned up and what can I do to ensure my build machine doesn't run out of space again due to this issue?

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

Update 2013-03-13
I created a small powershell script that runs nightly to delete the temp directory contents. Here's the powershell script:

Stop-Service TFSBuildServiceHost.2012
Remove-Item Drive:PathToTFSUserAppDataLocalTemp* -recurse -exclude Build*
Start-Service TFSBuildServiceHost.2012

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

I have the task run with elevated privileges nightly as the TFSUser account. The elevated privileges are needed because we need to start and stop services.

推荐答案

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

This is a TFS2010 issue that I guess they haven't addressed in 2012 yet. The build system creates temp files and never cleans them up, leading eventually to failures because the disk is full or because they use a limited number of digits for the unique IDs and run out of new ids that can be used (IIRC, it falls over at 65536 files, which we usually hit long before we run of disk space)

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

The solution is to delete the temp files periodically. I just do this manually about 2-4 times a year. The safest approach is probably to disable your build agents and then clean out the temp folder, then re-enable the agents (and it may not be a bad idea to reboot the server at the same time if it's been running for months).

另一种可能是每天/每周设置一个小的计划任务,清除任何几天前的临时文件,并在您不知道其他任何事情(例如夜间构建)会在半夜运行它正在运行.

An alternative may be to set up a small scheduled task daily/weekly that cleans away any temp files older than a few days old, and run it in the middle of the night when you know nothing else (like overnight builds) will be running.

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

Or if your server is rebooted several times a year anyway, a start-up script that cleans out the temp folder before the build agents start up may be a clean & tidy solution.

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

It all depends how quickly your disk is filling up - you'll probably find that it's many months of accumulated cruft rather than something that hits you after a short time, in which case you don't need a very aggressive approach to keep things running smoothly.

这篇关于构建机器上的大型 TFSUserAppDataLocalTemp 目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆