2014-02-18 2 views
0

매우 이상한 문제가 있으며이 커뮤니티의 도움을받을 수있는 마지막 희망이 있습니다.CruiseControl vmware 워크 스테이션에서 빌드 시간이 저하됩니다.

현명한 설치 프로그램 패키지의 세 가지 요소를 통합하는 빌드 시스템이 있습니다. 지금보고있는 증상은 이러한 프로젝트의 빌드 시간이 가상 컴퓨터에서 시간이 지남에 따라 저하되는 것입니다. 이것은 여러 가상 시스템에서 발생하며 2013 년 11 월부터 해왔습니다. 다행히 가상 시스템을 복제하는 습관이 있었으며 증상이 초기 단계 인 12 월 초에 시스템의 복제본을 보유했습니다.

예를 들어 일반적인 빌드 시간은 48 ~ 50 분으로 완료되어야합니다. 문제가 발생한 시간이 1 시간 45 분으로 줄어들 었다고 느낄 때까지는 시간이 천천히 저하되었습니다. 나는 정상적으로 시스템의 성능을 모니터링하는 것이 아니라 빌드 결과를보고 있으므로 결코 알지 못합니다. 내가 가진 복제 기계는 시스템을 복원하여 약 1 시간 12 분에 구축합니다.

빌드 시간을 분석하면 모든 설치가 현명한 설치 프로그램에서 사용하고 있습니다. 응용 프로그램 제거 및 재설치를 시도했습니다. temp 디렉토리를 지우고, chkdsk를 실행하고, 다른 일반적인 디버깅 작업을 수행했습니다.

현명한 설치 프로그램 프로젝트 중 하나는 데이터베이스 파일을 업데이트하기 때문에 다시 컴파일해야하는 병합 모듈입니다. 컴파일하는 데 8 분 밖에 걸리지 않습니다. 그것은 1/2 시간 이상 걸립니다.

누구든지 내가이 문제를 진단하기 위해 무엇을 찾을 수 있다고 생각할 수 있습니까? 1 달 동안 현명한 설치 프로그램이 컴파일 할 때 컴파일 시간이 최대 45 분이 될 수 있도록 시스템을 저하시킬 수있는 것은 무엇입니까? 빌드 컴퓨터 OS : XPsp3 HDD : SSD 다른 빌드는 동일한 호스트 컴퓨터에서 실행되며 동시에 실행할 수 있지만, 2013 년 11 월 이전에는 성능에 영향을 미치지 않았습니다.

+0

명령 줄에서 빌드 작업을 실행 해 보셨습니까? 거기도 똑같이 느린가요? –

+0

오랫동안 답변을 드려 죄송합니다. 예, 현명한 설치 프로그램 빌드는 명령 줄에서 똑같이 응답하지 않으므로 이는 '순항 제어 문제'가 아닙니다. 문제는 현명한 설치 프로그램 자체입니다. 실제 출력 파일은 정상 시간 내에 생성됩니다. 그러나 현명한 설치 프로그램은 각 프로세스마다 다른 40 분 동안 중단됩니다. 병합 모듈을 빌드하는 프로세스와 기본 설치를위한 프로세스가 있습니다. 두 경우 모두 Wise for Windows Installer는 정확히 40 분 동안 중단됩니다. 또한 Wise 용 IDE를 열 때 파일보기를 터치하면 앱이 중지됩니다. –

답변

0

문제는 실제로 우리의 Visual Studio 빌드를 사용하는 것입니다.

각 빌드마다 바이너리의 버전 번호를 증가시킵니다. 모든 proj 파일의 값을 실행하고 업데이트하는 프로세스가 있습니다.

Visual Studio를 컴파일하면 .net 파일마다 레지스트리에 어셈블리 정보가 추가됩니다. 버전 번호가 변경되었으므로 레지스트리 항목이 변경됩니다. 레지스트리가 정리되지 않습니다. 그래서 방금 1 년 또는 그 이상의 레지스트리 항목을 축적했습니다.

현명한 설치 관리자가 실행되면 레지스트리를 통해 검사 할 때 이유가 확실하지 않습니다. ProcMon을 사용하면 프로세스가 실행되고 reg를 읽는 것을 볼 수 있습니다. 레지스트리가 너무 많이 부풀어 오르면 빌드 시간이 느려집니다.

이제 새로운 빌드 컴퓨터에서이 문제를 방지하는 방법에 대한 큰 의문이 생깁니 까? 빌드를 위해 모든 CLSID 항목을 정리하려면 어떻게합니까?

원시 Win7 빌드 시스템에서 전체 빌드가 20 분 이내에 완료됩니다!

또한 프로젝트의 현명한 스튜디오 설정을 한 번 더 변경했습니다. 높은 압축을 사용하는 대신 mszip 압축으로 전환했습니다. 우리의 출력 파일은 50MB 더 큽니다. 그러나 새 컴퓨터에서도 빌드 시간이 훨씬 더 빠릅니다.

해결책 :

는 버전 번호를 변경하기 전에 솔루션 정리 작업을 추가합니다. 이 한 가지 변경으로 인해 수개월에 걸쳐 매우 일관된 빌드 시간이되었습니다.

문제는 회사에서 어셈블리 버전 및 파일 버전 값을 변경하는 프로세스를 변경했기 때문입니다. 리빌드가 모든 빌드에서 레지스트리에 어셈블리 정보를 남기고 있다는 것을 거의 알지 못했습니다.

  • 청소 .NET 솔루션
  • 증가 파일 버전과 어셈블리 버전에 대한 버전 : 그래서 작업 목록은 지금처럼 보인다.
  • 빌드 .NET 솔루션

는 희망이 같은 문제가 발생하는 다른 사람을 도움이됩니다.

관련 문제