서브버전 성능 최적화 - Subversion Performance Tuning
Subversion 튜닝에 대한 자료가 없어서 찾아본 자료를 정리해 본다.
httpd 설정 변경
subversion 1.8 부터 사용하는 http library 가 neon 에서 serf 로 변경이 되었다. serf 는 multiplex 와 asynchronous connection 을 사용하므로 httpd의 다음 설정을 변경해 주어야 성능 향상의 효과를 느낄 수 있다.
CentOS 의 apache 설정은 KeepAlive 는 기본적으로 꺼져 있다. 이것을 On 으로 설정하고 최대 KeepAlive Requests 가 100 인데 이 값도 큰 값으로 설정하자.
그리고 프로젝트의 용량이 크거나 네트웍 사정이 좋지 않을 경우 TimeOut 과 KeepAliveTimeout 의 값을 충분히 크게 늘려야 한다.
# Timeout: The number of seconds before receives and sends time out. Timeout 60 # KeepAlive: Whether or not to allow persistent connections (more than one request per connection). Set to "Off" to deactivate. ## KeepAlive Off KeepAlive On # MaxKeepAliveRequests: The maximum number of requests to allow during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. ## MaxKeepAliveRequests 100 MaxKeepAliveRequests 10000 # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. #KeepAliveTimeout 15 KeepAliveTimeout 60
공통
Disable SVNPathAuthz
Path-based ACL 을 사용하므로 off 로 할수는 없을것 같음
Increase LDAP Cache
현재 LDAP 을 사용하지 않으므로 해당없음
Using the FSFS storage method instead of BDB
FSFS 가 BDB보다 안정성이 더 뛰어나나 성능은 차이 없다는 의견이 많음(default 가 FSFS고 현재 모든 repository가 FSFS 로 사용중)
svnadmin pack
1.5 이상에서만 제공되는 기능으로 (http://subversion.apache.org/docs/release-notes/1.5.html#fsfs-sharding) repository 용량이 10% 정도 축소되므로 caching 등에 유리
기존 repository 를 upgrade 해야 할수 있음
svnadmin upgrade REPOS_PATH svnadmin pack REPOS_PATH
mod_dav_svn 대신 svnserve 사용
- mod_dav_svn 보다 성능 향상이 많다는데 httpd 외 별도의 daemon 을 띄워야 하고 방화벽 오픈, 기존 checkout 한 URL 을 relocate (URL scheme 이 변경됨) 해야 하고 Web 기반 source browsing, Jenkins나 Bamboo 같은 CI 연계 문제가 있어서 패스
- svn 1.7 부터는 faster HTTP 구현으로 많은 속도향상(http://subversion.tigris.org/issues/show_bug.cgi?id=3371)이 있다고 하니 svnserve 를 쓸 일이 더 더욱 없을것 같음
1.7 이상 가능 기능
- 1.7 부터 추가된 MemoryCaching 기능 사용(http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.optimization.caching)
- Data Compression 기능 사용(0 - 9 까지 있고 0은 미압축, 9가 최고의 압축율)
<IfModule dav_svn_module> # Enable a 1 Gb Subversion data cache for both fulltext and deltas. SVNInMemoryCacheSize 1048576 SVNCacheTextDeltas On SVNCacheFullTexts On SVNCompressionLevel 5 </IfModule>
See Also
Ref
- http://serverfault.com/questions/80040/what-are-your-tricks-for-optimizing-your-subversion-configuration
- http://stackoverflow.com/questions/6227893/why-choose-mod-dav-svn-instead-of-svnserve-a-repository-browser
- http://blogs.wandisco.com/2011/09/27/subversion-apache-tuning-for-ms-windows/