2008-10-17 108 views
3

我注意到,我的Trac實例運行速度不快,並且有很大的滯後。這是一個項目的開始,所以Trac中沒有太多的東西(除了插件和代碼加載到SVN中)。如何提高Trac的性能

設置信息:這是通過WebFaction託管的SELinux系統。它落後於Apache,連接通過SSL。目前.htpasswd文件是我用來控制訪問的。

有沒有推薦的方法來提高Trac的性能?

+0

您可以提供有關您的設置的更多信息 - 操作系統,Web服務器,使用的協議,使用的認證方案。 – nosklo 2008-10-17 22:52:38

+0

細節補充,謝謝你的建議。 – torial 2008-10-21 22:56:24

回答

5

如果不知道更多關於設置的信息,很難說,但一個簡單的勝利就是確保Trac運行在mod_python之類的東西上,這可以使Python運行時保持在內存中。否則,每個HTTP請求都會導致Python運行,導入所有模塊,然後最終處理請求。使用mod_python(或FastCGI,無論你喜歡什麼)將消除該負載並跳過直接的好東西。另外,隨着Trac數據庫的增長以及更多人使用該站點,您可能會超過默認的SQLite數據庫。此時,您應該考慮將數據庫遷移到PostgreSQL或MySQL,因爲它們可以更快地處理併發請求。

+0

上次我看到,他們的MySQL支持非常好,建議不要。 我試過一個postgres導入我的數據庫,但它缺少一些與里程碑有關的東西。 – 2008-10-21 10:44:00

+0

我一直在MySQL上運行Trac 8個月,它似乎表現不錯。我遇到的唯一問題是,如果不使用8小時(即隔夜),Trac和MySQL之間的連接就會中斷。我有一個腳本,在上午6點連接到我們的Trac主頁以解決此問題。 – 2009-06-15 10:04:03

3

我們用FastCGI獲得了最好的運氣。另一個關鍵因素是,只使用https進行身份驗證,但使用http進行所有其他流量 - 我真的很驚訝這有多大影響。

1

使用和expires-header靜態提供chrome文件也可以提供幫助。請參閱this page的結尾。

2

我注意到,如果

select disctinct name from wiki 

花費超過5秒(例如,由於該表中的一百萬行 - 這是一個真實的故事(我們有這樣的充滿它)的腳本),瀏覽維基頁面變得非常緩慢並且接管了2*t*n,其中t是引用查詢的執行時間(當然大於5s),並且n是查看頁面上存在的許多tracwiki鏈接。 這是由於trac有一個(硬編碼)5s緩存在此查詢中過期。它被trac用來告訴鏈接應該是什麼顏色。我們將這個值重新編碼爲30秒(我們需要這麼多頁面,所以每30秒鐘有人需要等待6到7秒)。

它可能不是什麼造成你的問題,但它可能是。祝你好運加快你的Trac實例。