문제

우리는 다소 큰 SVN 저장소를 가지고 있습니다.SVN 업데이트를 수행하는 데 코드를 추가할수록 시간이 점점 더 오래 걸립니다.우리는 추가했습니다 svn:externals 다음과 같은 일부 프로젝트에서 반복된 폴더에 FCK편집기 다양한 웹사이트에서.이것은 도움이 되었지만 그다지 많지는 않았습니다.

업데이트 시간을 줄이고 SVN 속도를 높이는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

오래된 SVN 저장소(또는 아주 새롭지만 최적으로 설정되지 않은 저장소)라면 아마도 이전 BDB 스타일의 저장소 데이터베이스를 사용하고 있을 것입니다. http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs 새로운 것에 대한 메모가 있습니다.하나에서 다른 것으로 변경하는 것은 그리 어렵지 않습니다. 전체 기록을 덤프하고 파일 시스템의 새로운 svn 형식으로 다시 초기화한 다음 다시 가져옵니다.쓸모없는 정보의 전체 체크인을 제거하기 위해 repo-dump를 필터링하는 것도 동시에 유용할 수 있습니다(예를 들어 누군가가 체크인한 20MB 이상의 타르볼 파일을 제거했습니다).

일반적인 속도에 관한 한, 고품질(빠른) 하드 드라이브와 OS 기반 캐싱을 위한 추가 메모리는 SVN 작동 속도를 높이는 측면에서 흠잡을 데가 없습니다.

클라이언트 측에서 외부 저장소 시스템에 대한 SSH 액세스를 위해 PuttyAgent를 통해 tortoisesvn을 설정한 경우 SSH 압축을 활성화할 수도 있으며 이는 도움이 될 수도 있습니다.

편집하다: SVN v1.5에는 fsfs-reshard.py FSFS 기반 svn 저장소를 여러 디렉터리로 분할하는 데 도움이 되는 도구입니다. 이 디렉터리 자체는 다른 드라이브 스핀들에 연결될 수 있습니다.수천 개의 수정본이 있는 경우에도 도움이 될 수 있습니다. 수천 개의 파일 중에서 하나의 파일을 찾는 것 외에 다른 이유가 없으면 시간이 걸립니다(그리고 IOwait 시간을 보고 그것이 문제인지 알 수 있습니다).

다른 팁

작업 복사본 코드가 포함된 폴더에 대한 바이러스 검사를 비활성화합니다.이로 인해 업데이트 속도가 두 배 빨라졌습니다.

실제로 대답은 아니지만 svn이 I/O를 많이 사용하는 이유 중 하나가 .svn/text-base 디렉터리에 각 파일의 추가 복사본 하나를 저장한다는 사실을 아는 것이 흥미로울 수 있습니다.이로 인해 로컬 diff 작업이 빨라지지만 하드디스크 공간과 I/O를 많이 소모합니다.

http://subversion.tigris.org/issues/show_bug.cgi?id=525 세부 사항이 있습니다.

하나의 저장소에 여러 프로젝트가 있는 것 같습니다.적절한 곳에 분할하면 큰 도움이 될 것입니다.

아마도 Git은 변경 사항을 저장/처리하는 방식으로 인해 Subversion보다 훨씬 빠르지만 직접 사용해본 경험은 없습니다.

서버 연결 속도가 가능한 한 빠른지 확인하십시오(기가비트 이더넷).서버의 어레이에 빠른 디스크가 있는지 확인하십시오.물론 필요한 것만 확인하세요.

몇 가지 일반적인 성능 조정이 있습니다.SVN은 I/O가 매우 무겁기 때문에 더 빠른 하드 디스크가 옵션입니다(양쪽 모두).서버에 메모리를 더 추가하세요.클라이언트에 조각 모음된 하드 디스크(Windows용)가 있는지 확인하십시오.

어떤 액세스 방법을 사용하는지도 중요합니다.원격 파일 시스템(file:/// 액세스 사용)에 저장된 저장소는 svnserve 또는 mod_svn이 있는 Apache보다 훨씬 느립니다.단순 파일 공유에 리포지토리가 있는 경우 후자 중 하나를 사용하는 것이 좋습니다.

TotoiseSVN은 기본적으로 백그라운드에서 파일 변경 사항을 살펴보고 이로 인해 컴퓨터 속도가 느려지는 것을 확인했습니다.모든 것을 제외하고 체크아웃이 있는 디렉터리만 포함하도록 구성을 변경했습니다.신원조사를 끌 수도 있습니다.이 두 설정은 모두 아이콘 오버레이 설정 노드에 있습니다.

특히 많은 외부 항목에서 느린 svn 작업이 DNS와 관련되어 있는 경우가 있습니다.svn은 모든 svn:external(상대 항목에 대해서도)마다 DNS 조회를 수행하는 것처럼 보입니다.svn 서버 호스트 이름을 /etc/hosts에 추가하거나 resolv.conf를 수정하는 것이 유용할 수 있습니다.

나는 내 경험을 통해 다음과 같은 사실을 발견했습니다.어떤 통해서도 아니고 실제 테스트) 특히 SVN repo 서버가 원격인 경우 외부를 사용하면 속도가 느려지는 것 같습니다.여러 위치에 중복된 코드(예: FCK 편집기)가 있는 경우 해당 파일을 동기화하고 관리 가능하게 유지하는 것이 업데이트 속도보다 더 중요하므로 외부 코드를 사용하는 경향이 있습니다. 대신 중복된 코드로 작성하세요.(Windows XP를 사용하는 경우 다음을 사용할 수 있습니다. 접합점).

우리는 코드 베이스를 여러 형제 모듈로 나누고 Ant 스크립트를 작성하여 한 명의 개발자가 다른 모듈에서 일어나는 일에 너무 신경 쓰지 않고 한 번에 하나의 모듈에서 작업할 수 있도록 했습니다.

  • 최상위 빌드 스크립트는 모든 모듈 빌드 스크립트를 트리거합니다.
  • 외부 라이브러리는 ~ 아니다 Subversion에 저장되지만 Apache Ivy를 사용하여 네트워크 드라이브에서 가져옵니다.(내부 Maven 저장소처럼 생각하세요).
  • 모듈 간의 종속성도 Ivy를 사용하여 관리됩니다.

일반적으로 개발자는 일주일에 두 번씩 전체 트리를 업데이트해야 하지만 점심/커피 휴식 시간 전에 쉽게 완료할 수 있습니다.

읽기 액세스 권한 사용(예:특정 개인/그룹으로 읽기 액세스를 제한하면 저장소 속도가 많이 느려집니다.특히 인증이 특별한 방법으로 수행되는 경우.Windows 도메인에 대해.물론 쓰기 액세스 권한의 경우에도 마찬가지지만 쓰기는 읽기보다 빈도가 낮습니다.그리고 쓰기 액세스를 제한하는 것이 읽기 액세스를 제한하는 것보다 더 중요할 수 있습니다.

리포지토리 루트에 많은 폴더가 있고 로컬 복사본이 리포지토리를 반영하는 경우 모놀리식 로컬 복사본을 여러 개의 분리된 다운로드 가능한 폴더로 분할하고 이러한 폴더도 별도로 업데이트해 보십시오. 이는 하나의 큰 폴더보다 정말 빠릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top