12

Windows Server 2008 R2 で TFS 2012 Update 1 を使用しています。アカウント TFSUser で TFS ビルドを実行しています。先日、ビルド マシンのスペースが不足しました。調査の結果、フォルダー C:\Users\TFSUser\AppData\Local\Temp には 50 GB を超えるファイルがあり、その中には 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

これは、2012 年にはまだ対処されていないと思われる TFS2010 の問題です。ビルド システムは一時ファイルを作成し、それらをクリーンアップしないため、ディスクがいっぱいであるか、一意の ID に使用する桁数が限られているため、使用できる新しい ID が不足しているため、最終的に失敗につながります (IIRC、フォールオーバーします)。 65536 ファイルで、通常はディスク容量がなくなるずっと前にヒットします)

解決策は、一時ファイルを定期的に削除することです。私はこれを年に2〜4回手動で行います。最も安全な方法は、おそらくビルド エージェントを無効にしてから一時フォルダーを消去し、エージェントを再度有効にすることです (サーバーが数か月実行されている場合は、同時にサーバーを再起動することも悪くないかもしれません)。

別の方法として、数日以上前の一時ファイルを削除する小さなスケジュール タスクを毎日または毎週設定し、他に何も実行されないことがわかっている真夜中に実行することもできます (夜間のビルドなど)。

または、サーバーが年に数回再起動される場合は、ビルド エージェントが起動する前に一時フォルダーを消去する起動スクリプトがクリーンで整然としたソリューションになる可能性があります。

それはすべて、ディスクがどれだけ早くいっぱいになるかによって異なります。おそらく、それは短期間で発生するものではなく、何ヶ月にもわたって蓄積された残骸であることに気付くでしょう。その場合、物事を実行し続けるために非常に積極的なアプローチは必要ありません。スムーズに。

于 2013-03-12T21:06:54.767 に答える