2012-08-24 98 views
1

怎麼可能是這樣的:svn ls -v需要比正常情況下的時間長250多長時間svn lsSVN ls命令超慢

即使使用file:// schema也沒有關係使用哪種傳輸方式,這沒什麼區別。我也嘗試啓用memcached,但沒有任何改進。

有趣的是,在頂層目錄中,這個命令是最慢的,越深入,它越快。目錄中有多少項目似乎並不重要。

我爲客戶端和服務器都使用svn版本1.7.1。和FSFS回購格式。

這裏定時

svn ls -v svn://trac/koh/ 0.01s user 0.01s system 0% cpu 39.960 total 
svn ls svn://trac/koh/ 0.00s user 0.02s system 6% cpu 0.243 total 

回答

1

這可能是svn ls能夠從工作目錄在本地使用信息,同時svn ls -v必須返回到服務器,以獲得所需的信息。它也可能是查詢的信息量。 svn ls只需要文件名,而svn ls也需要修改和最後一個作者。

但是,我沒有找到時間要長250倍:你是對所有客戶端

$ time svn ls 

real 0m0.514s 
user 0m0.046s 
sys  0m0.061s 

$ time svn ls -v 

real 0m0.530s 
user 0m0.000s 
sys  0m0.109s 

會出現這種情況,或只是機器?這是Windows還是Unix/Linux?你試圖列出的目錄有多大?當您執行svn ls時,工作目錄中是否有更改?或者,你是否一直在使用URL,所以它必須去服務器?你有沒有注意到其他有速度問題的東西?

+0

相同的行爲會發生不同的客戶端機器,我永諾做LS的回購URL,不涉及工作副本。我的服務器運行FreeBSD,並且客戶端是Windows,FreeBSD,OS X,它在任何地方都是一樣的。目錄的大小似乎並不重要,我的頂級目錄只有4個條目,但列表最慢。回購本身雖然是55k大版本,並且在服務器上需要550GB。 – parceval

+0

一旦我可以通過URL連接到我的SVN存儲庫,就必須嘗試一下。這可能是由於它必須獲取的信息量:獲取文件名與文件名,最後一次提交以及提交的作者。該名稱可能很容易檢索,但修訂版和作者可能需要更深入的查詢。 –

1

我發現「svn ls -v svn:// svn」會生成一個「get-locks」服務器日誌消息,這是發生時間的地方。我們的存儲庫文件系統是NFS。許多「getattr」和「查找」NFS調用都會發生。所以出於某種原因,SVN服務器正在爲獲取鎖定做很多屬性。

我還沒有發現有什麼這樣做的原因是尚未...