2013-03-12 26 views
11

Tôi đang sử dụng TFS 2012 Update 1 trên Windows Server 2008 R2. Chúng ta có TFS build đang chạy dưới tài khoản TFSUser. Một ngày khác, chúng tôi đã hết dung lượng trên máy xây dựng của chúng tôi. Sau khi điều tra, tôi thấy rằng thư mục C: \ Users \ TFSUser \ AppData \ Local \ Temp có hơn 50GB tệp trong đó, một số có niên đại vào tháng 10 năm 2012. Không có tệp nào quá lớn, nhưng chúng không dường như dường như bị làm sạch.TFSUser lớn AppData Local Temp thư mục trên máy xây dựng

Điều tra ngày hôm nay cho thấy thư mục được ghi vào rất nhiều trong quá trình xây dựng tự động. Tại sao những tệp này không được dọn dẹp và tôi có thể làm gì để đảm bảo máy xây dựng của tôi không còn hết dung lượng do vấn đề này?

Cập nhật 2013-03-13
Tôi đã tạo tập lệnh PowerShell nhỏ chạy hàng đêm để xóa nội dung thư mục tạm thời. Đây là kịch bản PowerShell:

Stop-Service TFSBuildServiceHost.2012 
Remove-Item Drive:\Path\To\TFSUser\AppData\Local\Temp\* -recurse -exclude Build* 
Start-Service TFSBuildServiceHost.2012 

Tôi có nhiệm vụ chạy với đặc quyền cao hàng đêm làm tài khoản Người dùng TFS. Các đặc quyền nâng cao là cần thiết vì chúng ta cần phải bắt đầu và dừng các dịch vụ.

Trả lời

8

Đây là vấn đề TFS2010 mà tôi đoán là chưa được giải quyết trong năm 2012. Hệ thống xây dựng tạo các tệp tạm thời và không bao giờ làm sạch chúng, dẫn đến thất bại vì đĩa đầy hoặc vì chúng sử dụng số chữ số giới hạn cho các ID duy nhất và hết các id mới có thể được sử dụng (IIRC, tại 65536 tệp, mà chúng tôi thường nhấn lâu trước khi chúng tôi chạy không gian đĩa)

Giải pháp là xóa các tệp tạm thời định kỳ. Tôi chỉ làm điều này bằng tay khoảng 2-4 lần một năm. Cách tiếp cận an toàn nhất có thể là vô hiệu hóa các tác nhân xây dựng của bạn và sau đó dọn sạch thư mục tạm thời, sau đó kích hoạt lại các tác nhân (và có thể không phải là một ý tưởng tồi để khởi động lại máy chủ cùng một lúc nếu nó được chạy trong nhiều tháng).

Một giải pháp thay thế có thể là thiết lập một tác vụ nhỏ được lên lịch hàng ngày/hàng tuần để xóa mọi tệp tạm thời cũ hơn vài ngày và chạy vào giữa đêm khi bạn không biết gì khác (như xây dựng qua đêm) sẽ chạy.

Hoặc nếu máy chủ của bạn được khởi động lại vài lần trong một năm, một tập lệnh khởi động dọn dẹp thư mục tạm thời trước khi tác nhân xây dựng khởi động có thể là giải pháp gọn gàng &.

Tất cả đều phụ thuộc vào tốc độ lấp đầy đĩa của bạn - bạn có thể thấy rằng nhiều tháng tích luỹ hơn là một thứ gì đó chạm bạn sau một thời gian ngắn, trong trường hợp đó bạn không cần một cách tiếp cận rất tích cực để giữ cho mọi thứ diễn ra trôi chảy.

+0

Cảm ơn Jason. Tôi sẽ xem xét một kịch bản nhỏ được chạy như tôi khá quên (vì vậy tại sao tôi chương trình). :-) –

+1

Hóa ra tôi cũng khá quên :-) ... Tôi vừa kiểm tra máy chủ của chúng tôi sáng nay và tôi đã thiết lập một tác vụ được lên lịch chạy vào mỗi tối thứ Bảy lúc 11:30 tối và chạy 2 dòng batch script: 'del/F/S/Q" C: \ Documents and Settings \ TFSSERVICE \ Cài đặt cục bộ \ Temp \ *. * "' 'del/F/S/Q" C: \ WINDOWS \ Temp \ *. * "' –

+0

Chúng tôi đã gặp sự cố này khi các dự án thiết lập vdproj của chúng tôi bắt đầu không thành công trên máy chủ xây dựng TFS 2010. Devenv cố gắng tạo các tệp tạm thời khi xây dựng MSI. Chỉ tìm thấy snag này bằng cách khởi chạy VS và tạo một dự án MSI mới/vdproj (trên máy chủ xây dựng), đồng thời sử dụng ProcMon và sau đó nhận thấy một lượng lớn các kết quả * NAME COLLISION * trên các hoạt động CreateFile trong AppData của dịch vụ xây dựng Thư mục \ Local \ Temp. Xoá bỏ điều này ngay bây giờ ... –

Các vấn đề liên quan