Skip to content

Some Optimization

Tennyleaz edited this page Aug 22, 2018 · 5 revisions

除了 MySQL 資料庫優化(這很重要但是蠻複雜!),本身 Piwik 伺服器也有不少優化餘地。
當資料量一大,未歸檔(Archive)的資料容易拖慢每個新 request 或是伺服器網頁的速度。官方的說明文件有提到,進行定時的自動歸檔可以有效的減少反應時間。
主要方式是在伺服器網頁設定內,選擇 不要 Auto-Archiving:
如圖
然後建立一個新的例行性工作排程(cron job):

crontab -e

加入一行這樣:

分 時 日 月 星期 要執行的指令
5 * * * * www-data /usr/bin/php7.1 /var/www/<網站名稱>/public_html/console core:archive --url=http:/<網站名稱>/ > /<我要放log的目錄>/piwik-archive.log 2>&1

基本上我們要在/etc/cron.d/底下建立一個文件,然後以上的指令會排程每小時的05分執行一次。紀錄檔案會輸出到piwik-archive.log內。

  • 第一個指令/var/www/<網站名稱>/public_html/console是 piwik 控制台的路徑,
  • 第一個參數--url=http:/<網站名稱>/是你的 piwik 網站主頁的路徑,
  • 第二個參數> /<我要放log的目錄>/piwik-archive.log你想輸出是 cron 工作的日誌檔案位置,
  • 第三個參數2>&1是錯誤日誌輸出的檔案位置,&1就是我要印在第二個參數同一個檔案內

目前用使用者 www-data 在某些 Linux 發行版上可能會有權限問題,遇到問題可以不要切換使用者或是直接用 root

這樣一來每小時會封存一次新進紀錄,我測試可以發現封存後的新 request 回應時間的確有加快了。
crontab 使用方式可以參考例行性工作排程(crontab)

Clone this wiki locally