2009-10-29 74 views
2

我們有一個3.5 Gb的SVN倉庫最近從一個6 GB的移植。我們保留所有內部製作的軟件和許多小型共享組件。我們也做了很多標籤。項目保留了它的二進制依賴關係的副本,主要是libs。我們現在無法移動到GIT。顛覆性能調整

對我們開發人員的第一印象是,Subversion非常慢,我一直告訴他們歷史相關的操作,但也有優點。

該訪問是通過mod_dav_svn與自定義驗證。隨着我們每年外包一些項目並需要詳細的安全規則,授權將以提交後掛鉤實施。

我們要優化訪問,以便:

  • 難道 '的svn包'。
  • 實施身份驗證緩存。
  • 準備評估svnserve。

我們的代碼庫的佈局如下:

\root 
\proyect1 
    \trunk 
    <files> 
    \docs 
    \branches 
    \tags 
    \proyect1-1.2.3-beta 
    <files> 
    \proyect1-1.3.0 
    <files> 
    etc... 
. 
. 
. 
\proyectn 

是否有其他的優化而不是硬件相關的,以前顯示的成功?我們的文件的佈局能否改變?

+0

注意,這個問題會更適合於serverfault.com。 – RedGlyph 2009-10-29 18:57:26

+0

我同意,我不知道serverfault存在= d – Abdul 2009-10-29 20:00:38

+0

你可以複製的問題在那裏,你可能會得到更多的答案。我認爲這不符合網站政策。 – RedGlyph 2009-10-29 20:50:06

回答

5

我只會對我所經歷過的部分發表評論。

1)首先,它很大!通常情況下,最好將二進制文件和庫保存在存儲庫之外,即使將所有內容放在一起有時也更方便。我們有這樣的項目(我工作的地方)的文件沒有存放在倉庫中,而且佔用了很多地方。它在每次結賬或重要提交時都會殺死服務器,其他項目都很好。

分離項目通常也是一個好主意,svn:externals你有足夠的靈活性將它們鏈接在一起(如果有必要),避免單點故障問題,巨大的存儲庫大小,更容易進行備份等等上。

但是你不能總是選擇這些參數。

2)它是Linux的Apache服務器,還是它在Windows上運行?我已經看到了兩者之間的差異,Windows版本往往比較慢並且對配置非常敏感。

3)我會用svnserve而不是Apache mod_dav_svn做測試。網絡上的負載較輕,當許多人共享相同的服務器時(也取決於網絡配置),這也可能是一個阻塞點。

4)你使用的是1.5還是更好的1.6?文件系統已經得到改進,並且如果您已經從先前版本遷移,則通常執行轉儲/加載支付(check this link also)。我們對大型軟件庫進行了一些測試,並且獲得了幾個百分點,但是我們觀察到的結果有很大差異。

5)此外,您還可以考慮這個(從Version Control with Subversion) - 雖然我從來沒有嘗試過這個特殊的可能性:

對於Subversion 1。在圖6中,FSFS文件系統具有多個可配置參數,管理員可以使用這些參數來微調其存儲庫的性能或磁盤使用情況。您可以在存儲庫的db/fsfs.conf文件中找到這些選項及其文檔。

6)如果鉤子腳本執行不當,會給服務器交互帶來額外的延遲。 7)TortoiseSVN使用日誌緩存,它有時很煩人(它傾向於鎖定你無法刪除的文件 - 如果你不知道它會令人驚訝),但在瀏覽時爲用戶提供更快的響應日誌(除了在Windows上是一個集成良好的客戶端)。