2013-07-09 54 views
3

當工作拷貝通過NFS運行時,有沒有提高svn性能的方法?通過NFS的SVN工作拷貝

(*)需要它和NFS掛載的分區(/ home)。

我猜SVN客戶端讀取整個樹尋找變化時提交。我不知道什麼可以讓結賬變慢。

回答

3

按照Subversion FAQ

工作副本可以存儲在NFS(一個常見的情況是,當你的主目錄是NFS服務器上)。在Linux NFS服務器上,由於Subversion在檢出文件時內部使用了重命名,因此一些用戶報告應禁用「子樹檢查」(默認情況下啓用)。有關如何禁用子樹檢查的更多信息,請參閱NFS Howto Server Guide並導出(5)。

簽出性能可能受到幾個因素的制約,但很可能在您的情況下,它是對NFS裝入的I/O - 除非您飽和網絡連接或服務器尺寸過小。

+0

糟糕的性能不僅在結帳時可見 - 它還會影響合併和提交(因爲您比檢出更頻繁地執行這些操作,所以這更加成問題)。我曾預計,在每個目錄中使用數據庫而不是.svn目錄的Subversion 1.7會大大加速NFS共享上的svn操作。然而,情況正好相反:對於大多數行爲而言,性能會有輕微的下降。 – MRalwasser

-1

NFS上的簽出性能糟糕透頂,它成爲主要的瓶頸,而不是Subversion服務器的帶寬。 Bryce Denney和Wilson Snyder的rsvn是一個perl腳本,它使用ssh登錄到NFS服務器(假設允許)並遠程運行svn命令。在我的測試中,它的性能提高了幾個數量級。從該名男子頁的摘錄: - 遠程SVN -

NAME

rsvn運行顛覆文件服務器上的命令,如果可能的話

提要

rsvn ANY_SVN_COMMAND rsvn更新 rsvn --test

描述

如果可能,請在文件服務器上運行svn命令,而不必等待NFS。否則照常運行svn。一些SVN命令總是在本地運行,無論是爲了「安全」還是因爲在文件服務器上運行沒有任何好處(svn日誌)。

,將被默認發送到文件服務器的命令是這些(和它們的縮寫):

add checkout cleanup diff merge resolved 
revert status switch update 

爲什麼不提交遠程運行?因爲它會啓動一個編輯器,它不會總是通過非交互式SSH工作,或者你可能使用-m「FOO BAR」,並且shell的引用全部搞砸了。找出如何解決這些問題並將「提交」添加到列表中將是一件好事。

0

使用「nolock」選項進行掛載。它實際上是OS本地鎖,而不是NFS服務器端的鎖。

我從這個選項中獲得了更好的性能。