- 24 Piwik性能優化
第24章
首先得確保你的服務器滿足運行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/"
你應該會看到腳本輸出,包括歸檔的網站清單,以及在末尾陳述沒有發生錯誤的小結。
- 上一章:Piwik跟踪代碼
數據分析技術白皮書在2016年11月正式出版。
英文版:Piwik Performance Optimization – 簡體中文版:Piwik性能優化
Analytics Book繁體中文版上的內容按下列許可協議發布: CC Attribution-Noncommercial 4.0 International