Confluence 6 性能優化

這個頁面幫助你對應用性能進行提升需要進行的一些操作。這個頁面不是爲你對 Confluence 出現問題後進行問題修復的指南。如果你的 Confluence 崩潰的話,請查看Troubleshooting Confluence hanging or crashing 頁面中的內容來獲得幫助。

與其他應用服務器一樣,Confluence 可能需要對系統進行一些調整才能讓 Confluence 能夠承受更大的數據訪問量。我們盡我們最大的努力能夠讓 Confluence 滿足各種環境下的訪問需求。但是沒有一個配置能夠滿足所有用戶的需求和用戶的使用環境。

如果你在部署 Confluence 的時候遇到了性能方面的問題,並且希望獲得我們的幫助,你應該參考頁面 Requesting Performance Support 中的內容。

對你使用的工具採用最新版本

針對你的應用程序,使用最新版的安裝和 Java 運行環境。新的版本通常有更好的性能優化。

因沒有足夠內存避免 swapping

總是關注你服務器的交換(swapping)活動。當沒有足夠的 RAM 可用的時候,你的服務器可能開始將 Confluence 存儲在交換器的一些內容轉存到硬盤上。這個過程將會顯著降低垃圾回收的速度而對 Confluence 的性能產生影響。在集羣的環境下,交換器問題將會導致 Cluster Panic due to Performance Problems 問題。這是因爲交換器導致 JVM 在進行 Garbage Collection 的時候暫停,這個將會導致內部節點的通信中斷,而這個通信又是節點進行同步所需要的。

不要讓其他系統使用相同結構

下面的配置可能看起來是非常誘人的:你只有一臺服務器,這個服務器具有很高的性能,因此你將數據庫服務器,應用服務器和其他你的一些重要服務都同時部署在這個服務器上。如果這個系統能夠完美的運行,你可能還感覺不到什麼問題。問題是,當你可能忽略了一些問題,同時其他應用的 bug 將會對你部署的應用產生影響。例如,如果你的 Confluence 應用每天都在中午的時候變得緩慢,你有可能是其他的服務在利用共享的數據庫在創建報表?要麼你需要保證部署在同一架構上的應用不會互相影響,要不你考慮將不同應用部署到不同的架構上,這樣你也更好的進行控制。

選擇數據庫

Confluence 安裝中提供的嵌入 H2 數據庫僅僅是用來評估使用的,這個數據庫不適合使用生產環境中的 Confluence。當你對 Confluence 評估完成後,你必須切換到一個支持的外部數據庫中。我們推薦你使用你熟悉的數據庫,因爲你能夠更好的對數據庫進行維護,這個可能相對你不熟悉的數據庫來說,能更好的讓你對數據庫的性能進行優化。

數據庫連接池

如果 Confluence 的負載比較高,你可能需要增加你數據庫的連接數。

  • 如果你使用的是 JNDI 數據源,你需要在你的應用服務器配置文件中進行修改。
  • 如果你配置 Confluence 直接連接數據庫,你需要手動變焦 hibernate.c3p0.max_size 屬性,這個屬性在 confluence.cfg.xml 文件中定義,這個文件在你的 confluence.home 目錄中。當你修改了 Confluence 的這個配置文件後,你需要對 Confluence 進行重啓。

希望確定是否需要對i的數據庫連接池進行修改,針對不同時間段(在高峯時間段),對 thread dumps 進行查看來了解有多少線程正在連接數據庫。

數據庫基本情況

如果 Confluence 正在運行緩慢,那麼很有可能是其中一個數據庫遇到了瓶頸。

最先你應該檢查的是 數據庫延遲(Database Latency) 字段,這個字段的內容是在管理員控制檯中定義的。

數據庫延遲是通過向數據庫發送一個不重要的查詢來查詢數據庫的表來進行計算的,這個查詢通常只有一個表一個字段(例如,select * from CLUSTERSAFETY)。很明顯的,這個查詢應該非常快速的放回結果,通常應該是在 1 到 2 毫秒的樣子。如果這個查詢的返回時間到了 3 到 5 毫秒的話則表明數據庫中遇到了一些問題。如果這個返回超過了 10 毫秒,你需要對數據庫進行調整來提高數據庫的性能。幾個毫秒的性能開支可能看起來沒有什麼問題,但是考慮到 Confluence 在每一個查詢的時候可能需要對多個數據庫表進行查詢,同時這個查詢也會複雜得多。高延遲可能是因爲某些原因導致的(網絡速度慢,數據庫慢,連接池的連接等),因此需要你對這些問題進行調查研究。請一直對數據庫進行調整,指導延長時間控制在 2 毫秒以下。

顯而易見的,數據庫延遲只是你需要考慮的第一件事情。你依然有可能獲得 0 延遲,但是你還是有很多數據庫的性能問題,例如你的的數據庫表沒有建立索引。所以不要讓延遲率過度干擾你。

數據庫狀態和查詢分析

現代的數據庫會基於你對數據庫運行的查詢歷史來對查詢進行優化。使用 SQL EXPLAIN 語句將會告訴你數據庫查詢的優化情況。如果數據庫查詢命中率明顯的不同,那麼你需要考慮對數據庫運行狀態收集和優化。針對你數據庫的版本不同,優化的版本和方向也會不同。在大多數的情況下,你可以在 Confluence 運行的時候對數據庫查詢的運行狀態進行收集。但是這個查詢也會增加數據庫的負載,因此我們還是建議你最好不要在 Confluence 正常運行的時候運行,你可以考慮在週末運行。

Confluence 和 Apache 的緩存性能

爲了減少數據庫的載入數據和對很多操作提高效率,Confluence 將會保持自己的數據緩存。增加 Confluence 數據緩存的大小將會提高 Confluence 的速度(如果緩存太小的話),或者降低換成(如果緩存太大的話)。

請查看我們有關 Cache Performance Tuning 的文檔來獲得 Confluence 緩存的更多信息。

防病毒軟件

防病毒軟件也會顯著的降低 Confluence 的性能。防病毒軟件終止進程對磁盤的訪問是非常有害的,同時還可能會導致 Confluence 的錯誤。你應該配置你的防病毒軟件忽略 Confluence 的 home 目錄,這個目錄存儲的是 Confluence 索引和其他任何數據庫相關的目錄。

啓用 HTTP 壓縮

如果帶寬響應是你 Confluence 安裝的瓶頸的話,你應該考慮啓用 啓用 HTTP 壓縮。這個可能能夠讓你能夠降低你對帶寬的消耗。

請注意,針對 Confluence 2.8 及其早期版本,啓用 HTTP 壓縮會導致一些 known issues with HTTP compression ,這些問題將會增加內存的消耗。

性能測試

針對 demo 系統,你應該嘗試所有的可能的性能測試。如果可能的話,你應該針對你的模擬器環境運行性能測試。

Access 訪問日誌

你可以通過 enabling Confluence's built-in access logging 來找到那些頁面訪問環境和那些用戶正在訪問它們。

內建探測器

你可以通過使用 Confluence 的內建探測器,根據 Troubleshooting Slow Performance Using Page Request Profiling 頁面中的內容來識別導致頁面訪問緩慢的原因。

應用服務器內存設置

請參考 How to fix out of memory errors by increasing available memory 頁面中的內容。

Web 服務器配置

針對高負載環境,性能可以通過在 Confluence 環境之前配置 Apache 服務器來進行提升,請參考頁面 Running Confluence behind Apache 中的內容進行配置。

當你配置你新的應用服務器的時候,請確定你的配置能夠有足夠的線程和進程處理你的的負載。這個配置應用到 Web 服務器和應用服務器連機器上。如果可能的話,你應該爲你的應用服務器啓用連接池來連接到應用服務器。

可能內存泄漏的問題解決

一些外部的插件,尤其是一些插件是很久以前的了,同時也沒有什麼人對這些插件進行維護了,這些插件可能會在運行並且消耗內存但是卻從來沒有釋放內存。最後的結果可能會導致 Confluence 崩潰,但是在崩潰之前可能會直接先導致性能下降。Troubleshooting Confluence hanging or crashing 頁面中的內容能夠幫你對這方面的問題進行調試。一些插件我們已經知道能夠對系統性能造成影響並最終導致 Confluence 的崩潰。

 

https://www.cwiki.us/display/CONF6ZH/Performance+Tuning

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章