在我們的實時服務器上運行svn update
有時需要15分鐘以上才能完成。svn更新緩慢(在1Mb存儲庫上15分鐘以上)
- 我們的倉庫是非常小的,約爲1 MB,約100個文件(這是一個小網站)
- 我們有幾個開發商一舉兩得提交/更新,這是工作非常好
- 我們更新我們的服務器上的所有更改(只做
svn update
),這是運行非常緩慢 - 我們從來沒有做過從服務器
svn commit
(它應該是一個只讀版本我們網站)
隨着時間的推移,服務器上的svn update
似乎變得越來越慢,即使它只是一個需要更新的文件。我開始認爲服務器上的存儲庫的「年齡」與它的速度有多慢有關?如果是這樣,我們可以做些什麼來加速它?
更新#1
我仍然認爲「年齡」有事情做與svn update
是緩慢的,但可能要考慮什麼是真正發生時倉庫「年齡」在服務器上...
究其原因,我認爲這是如下:
- 我們自2010年1月 上定期(使用
- 我們還檢查了在WebsiteZ同一個版本庫以同樣的方式,但這種情況發生短短數天前,即2012
- 兩個WebsiteA和WebsiteZ是同一物理服務器上月和兩者都使用相同的庫
- 在WebsiteA運行
svn update
從版本100到101來更新需要20多分鐘 - 上WebsiteZ運行
svn update
從版本100到101更新只需要幾秒鐘
svn update
)簽出庫上WebsiteA(使用
svn checkout
)和更新它
這些網站,我可以看到的唯一區別是WebsiteA存在的時間更長一些。 WebsiteA可能有一些額外的文件(緩存內容),儘管這是非常小的(少於20個文件),並且包含緩存文件的目錄已被設置爲忽略使用svn:ignore的所有文件。
我想我不能排除網絡問題,但我認爲WebsiteA和WebsiteZ會運行相同的防火牆設置,如果有規則,它將是一個「塊」而不是「延遲」。由於這兩個網站都在同一臺服務器上,因此我認爲它們應該在網絡問題方面同時更新。
更新#2
這可能是值得一提的是,如果我們svn update file.txt
它運行速度非常快。就好像svn正在比較目錄中的所有內容,只是想知道要更新什麼。
更新#3
我們結束了升級SVN和升級所有檢查了修訂。svn update
現在似乎跑得快很多,而手指越過它就保持這種狀態。謝謝大家的幫助!
更新#4
當然,做一個新鮮結帳解決了這個問題,但只有幾天/周。我認爲今天我們終於找到了svn緩慢的原因。我們使用Zend_Auth並在每個頁面上調用Zend_Auth :: hasIdentity()來檢查用戶是否已登錄。此調用創建會話,然後在服務器上創建會話文件。如果瀏覽器(或googlebot)瀏覽時關閉cookie,我們會爲每個請求創建一個會話文件。因此我們的會話目錄有數百萬個文件。我們刪除了目錄中的文件,並通過在調用hasIdentity()之前檢查cookie是否已設置來確定用戶是否已登錄。 svn
更新現在運行在< 30秒。
你使用什麼協議?在此之前,我遇到過一些情況,有人在網絡驅動器上設置了svn repo,而人們使用file://協議訪問,性能非常糟糕。一旦我幫助啓動svnserve並且使用svn://協議的人們,一切都變得合理。 – 2012-07-11 08:09:49
感謝您的快速回復。我們使用svn:// – user1493124 2012-07-11 08:13:09
在我看來,它是介於您的「服務器」和導致問題的svn回購之間的東西,因爲我剛剛發現您說開發人員正在進行svn更新而沒有問題。如果緩慢是由svn回購引起的,你的開發人員也會受到影響,但事實並非如此。 – 2012-07-11 08:18:01