Piwik性能優化


第24章

Cloud

首先得確保你的服務器滿足運行Piwik的最低要求,然後再考慮Piwik安裝的性能優化問題。

部署和使用Piwik的最低要求

檢查你的網站服務器,使其符合運行Piwik的最低要求。

  • 你的網站服務器正運行Nginx;
  • 已安裝了PHP 5.3.3或以上版本;
  • 已安裝了MySQL 4.1或以上版本,或者已安裝了MariaDB;
  • 已安裝了PHP擴展pdo和pdo_mysql,或者已經安裝mysqli 擴展。

注意,隨著時間改變,當將來Piwik軟件進行新的升級時,如上所列示的最低要求可能會相應改變。

優化Piwik的性能

為了優化你的Piwik安裝性能,需要考慮如下幾個方面:

  • 服務器和RAM(硬件)
  • 負載均衡
  • 實時報告
  • 獨立URL的數量
  • PHP緩存機制
  • 定時任務

服務器和RAM

這個方法要求在Piwik安裝上增加額外的預算。你可以使用一個更好服務器,或者升級你的服務器(比如你的機器或者主要硬件)。

最好是你可以在一個完全專屬的服務器上運行Piwik,即不與其他軟件共享服務器資源。這並不是Piwik安裝嚴格要求的。

大部分的雲解決方案都是不錯的選擇。雲解決方案為你的硬件升級提供了靈活性(比如服務器,RAM,處理器,硬盤空間等等)。

負載均衡

使用負載均衡器意味著你的Piwik安裝同時使用多個服務器。負載均衡器能在多個服務器間均勻分佈 Piwik安裝的工作負荷。

  • 當使用負載均衡器時,你會遇到多個服務器上存在多個config.ini.php文件的情況。使用rsync來同步所有的config.ini.php文件;
  • 在Piwik的config.ini.php文件中,通過在[General]部分下面增加force_ssl=1來啟用SSL;
  • 通過將dbtable賦值給變量session_save_handler,以在Piwik的config.ini.php文件中實現數據庫會話的存儲;
  • 在每次Piwik軟件(或者任一插件)升級後,移除tmp/*文件夾的內容。

增加負載均衡器或者額外的服務器同樣需要為你的Piwik安裝增加額外的預算。

報告處理間隔

Piwik報告處理間隔默認被設置成150秒。為了使得Piwik運行更為平穩,增加報告處理間隔至3600秒(比如60分鐘或者1個小時)或者甚至7200秒(120分鐘或者2小時)。通過如下路徑進行設置:

Administration -> General -> Archive reports at most every X seconds

給seconds字段輸入更大的值(比如3600或者7200)。

唯一URL的數量

跟踪的唯一URL的數量越多,Piwik需要在數據庫中存儲的數據就越多,Piwik的數據庫大小將會增大越快。通過保持數據庫規模在邏輯上更小,就能避免Piwik性能的快速下降。

理論上下面列出的所有頁面地址指向具備高度相似內容的頁面(有時甚至是相同頁面)

www.example.com/hotels/list-shanghai/
www.example.com/hotels/list-shanghai/?checkin-date=2016-03-01&checkout-date=2016-03-02
www.example.com/hotels/list-shanghai/?checkin-date=2016-05-15&checkout-date=2016-05-18

這些頁面的差異僅僅是URL中的標記參數不同。

checkin-date=2016-03-01&checkout-date=2016-03-02
checkin-date=2016-05-15&checkout-date=2016-05-18

你可以在將這些URL存儲到Piwik數據庫中時排除掉這些相似URL。路徑為:

Administration -> Websites -> Global list of Query URL parameters to exclude

輸入URL的查詢參數清單,每行一個。

注意,一個或多個URL參數均是特定的,以實現排除功能,且僅能對後續的數據產生影響。回顧歷史數據時,這些URL參數不會從歷史數據和報告中被移除。

PHP緩存

通過PHP緩存(比如XCache)對Piwik的PHP代碼進行優化。

定時任務

當你通過網站瀏覽器登錄Piwik賬戶接口時,Piwik會默認的觸發報告歸檔進程。如果你的網站每日用戶會話數相對較高,那麼數據歸檔可能需要幾分鐘或者更久來進行。為了避免等待次數,可以在你的Linux服務器上設置一個定時任務,以便每小時自動處理這些數據。

為了自動觸發Piwik歸檔進程, 可以設置一個可以每小時執行的腳本。在Piwik的Linux服務器上,設置一個定時任務用於自動歸檔Piwik報告。定時任務是Linux服務器上一個基於時間的計劃服務,要求已經安裝php-cli or php-cgi。你需要通過SSH訪問進入服務器以進行設置。

通過文本編輯器創建一個新的定時任務:

nano /etc/cron.d/piwik-archive

將如下幾行加入到定時任務中:

MAILTO="youremail@example.com"
5 * * * * www-data /usr/bin/php5 /path/to/piwik/console core:archive --url=http://example.org/piwik/ > /home/example/piwik-archive. log

Piwik歸檔腳本將每個小時運行一次(每小時過5分鐘)。正常情況下,根據你網站當前的信息量情況,腳本會在1分鐘至30分鐘內執行完成。

讓我們來檢查定時任務的內容。當腳本執行出現錯誤時,腳本的輸出和錯誤信息將會被發送至你設置的郵箱地址youremail@example.com。

MAILTO="youremail@example.com"

定時任務會被如下用戶執行,且這個用戶一般是網站服務器的用戶。

www-data

PHP可執行文件的路徑如下。這個路徑很大程度上取決於你的服務器配置和操作系統。為了找出PHP5的執行文件路徑,可以在Linux shell下執行命令which php5或者which php。

/usr/bin/php5

腳本中唯一強制要求的參數如下。這個參數必須被設置到你的Piwik基礎URL中,例如http://analytics.example.org/ or http://example.org/piwik/。

--url=http://example.org/piwik/

腳本輸出內容的寫入路徑如下。如果你不希望記錄最後的Piwik定時任務輸出文本,可以採用/dev/null替代這個路徑。腳本數據包括有用的信息,比如歸檔了那些網站,花費了多久處理每一個數據和網站等等。

/home/example/piwik-archive.log

腳本寫入錯誤消息的可選路徑如下。如果在定時任務中漏掉這個路徑,系統的錯誤信息將被發送到你的郵箱。如果在定時任務中寫入這個路徑,系統將在這個特定的錯誤日誌文件中記錄錯誤信息。

/home/example/piwik-archive-errors.log

Cron工具使用兩種不同的配置文件類型:

  • 系統定時任務
  • 用戶定時任務

這兩種不同類型配置文件的唯一區別就在於第六字段。

在系統定時任務中,第六字段是運行這個指令的用戶的名稱。這使得系統定時任務可以以任何用戶的身份運行指令。

在用戶定時任務中,第六個字段是運行指令,所有的指令都是以創建定時任務的那個用戶來執行。這是一個安全特性。

如果你需要設定用戶定時任務類型的定時任務,需要寫入:

5 * * * * /usr/bin/php5 /path/to/piwik/console core:archive --url=http://example.org/piwik/ > /dev/null 

如下定時任務將在每小時5分鐘後觸發按日/週/月/年的歸檔進程。這將確保當你訪問Piwik賬戶接口時,數據已經被處理過了,Piwik報告能被正常加載。

你可以測試定時任務指令。通過在shell內以定時任務用戶運行腳本來確保定時任務將正常運行。

su www-data -c "/usr/bin/php5 /path/to/piwik/console core:archive --url=http://example.org/piwik/"

你應該會看到腳本輸出,包括歸檔的網站清單,以及在末尾陳述沒有發生錯誤的小結。



數據分析技術白皮書在2016年11月正式出版。

英文版:Piwik Performance Optimization – 簡體中文版:Piwik性能優化







Analytics Book繁體中文版上的內容按下列許可協議發布: CC Attribution-Noncommercial 4.0 International

Gordon Choi's Analytics Book