本文是小编为大家收集整理的关于构建机上的TFSUser/AppData/Local/Temp目录很大的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。
问题描述
我正在使用Windows Server 2008 R2上的TFS 2012 Update 1.我们的TFS构建在帐户TFSUSER下运行.前几天,我们在构建机器上耗尽了空间.经调查,我发现文件夹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帐户的身份运行.需要提高特权,因为我们需要开始和停止服务.
推荐答案
这是一个TFS2010问题,我想他们在2012年还没有解决.构建系统会创建温度文件,并且永远不会清理它们,最终导致故障,因为磁盘已满,或者因为它们使用有限数量的数字对唯一ID并用完了可以使用的新ID(IIRC,IIRC,它掉落了在65536的文件中,我们通常在磁盘空间运行之前很长时间击中)
解决方案是定期删除临时文件.我每年只手动进行大约2-4次.最安全的方法可能是禁用您的构建代理,然后清理临时文件夹,然后重新启用代理(如果服务器一直在运行了几个月,则可能不是一个坏主意)./p>
一种替代方案可能是每天/每周设置一个小规程的任务,清除比几天大的临时文件,并在深夜不知道其他(例如过夜构建)时运行它正在运行.
或者,如果您的服务器每年重新启动几次,那么在构建代理启动之前清理临时文件夹的启动脚本可能是一个干净且整洁的解决方案.
这一切都取决于您的磁盘填充的速度 - 您可能会发现这是累积的Cruft,而不是在短时间后击中您的东西,在这种情况下,您不需要非常激进的方法来进行保持一切顺利进行.
问题描述
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:\Users\TFSUser\AppData\Local\Temp 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?
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:\Path\To\TFSUser\AppData\Local\Temp\* -recurse -exclude Build* Start-Service TFSBuildServiceHost.2012
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.
推荐答案
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)
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.
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.