配置Matomo以优化速度
- 默认情况下,Matomo(Piwik)是实时生成报表的。当追踪大流量网站时,我们强力建议禁用“实时”报告,并推荐定时生成报告(比如每隔1小时或6小时)。这样,当访问用户界面的时候,系统只会读取预处理好的报告。
备注:实时访客工具和访客日志仍然是实时的,当天的其他报告(如热门搜索词)不会包含最新的访问和页面浏览。请阅读大流量网站预处理报告需要多久? - 更新Matomo(Piwik)到最新版本-如何更新大流量的Matomo服务器。有些时候新版本的matomo会包含一些数据库结构的更新,这些更新可能会导致大数据表结构的变化(当增加字段或新增索引等),这种更新要花费数分钟甚至数小时:此时建议通过命令行进行更新。
欢迎加入Matomo中文网官方QQ群255820112(点击滚动至本页末可扫描二维码),随时提问,有问必答。
配置服务器以优化速度
案例:有位Matomo(Piwik)用户向我们反映,在2013年的三月份曾经追踪过650万个PV,而PHP只配置了512兆内存。以下建议帮您配置服务器以获取最大速度。
- 如果要追踪大流量的网站,请将Matomo(Piwik)托管到强大的专用主机上。
- Matomo(Piwik)(PHP/Mysql)需要良好的内存支持:处理非常大的网站,1G内存是最低配置,内存越大越好。
- 使用PHP7最新稳定版本(相对于PHP5,PHP7性能优化了很多)
- 值得使用PHP cache来提高性能。幸运的是,PHP5与PHP7默认支持缓存。
- 推荐使用轻量级WEB服务器如Nginx或者lighttpd,它们比Apache或者IIS更快,更高效。
- 不要在共享文件系统、集群文件系统或网络文件系统上使用Matomo(Piwik),如NFS或者glusterfs。网络文件系统很慢,会给Matomo带来很多头疼的问题。请使用标准的文件系统。
- 对于高级用户,你可以将Matomo安装在负载均衡环境上并且在负载均衡器后使用多台服务器。
- Tracker API:如果你管理一个高流量的Matomo(Piwik)服务器,你可以很容易地将Matomo追踪API设置在Redis数据仓库上,这样追踪API的请求会非常快且富有扩展性。学习更多关于QueuedTracking插件的内容,它会指导你使用Redis来获得更好的扩展性。
- Tracker API:如果“Provider”插件已经在你的Matomo服务器中被激活,对于互联网提供商的反向DNS解析会带来毫秒级的花费。为了更快追踪访客的ISP,请使用MaxMind’s ISP或者Organization。点击此处了解如何安装它们。或者为了性能,你可以禁用“Provider”插件(此插件从Matomo2.15.0就默认被禁用了)。
- 对于大流量网站,你还可以使用异步访问日志批量加载功能(只限高级用户)
欢迎加入Matomo中文网官方QQ群255820112(点击滚动至本页末可扫描二维码),随时提问,有问必答。
配置数据库以优化性能
Matomo(Piwik)的性能很大程度上依赖于Mysql数据库的性能,因为Matomo的数据是存储在Mysql服务器中的,数据聚合也使用Mysql请求。
- 如果可能,请使用固态硬盘。
- 粗略估算,Matomo每增加500万PV,数据库就会增加1G。如果你的网站每天追踪10万PV(每月300万PV),一年下来估计有7G数据。
一个重要的事实是:如果要获得好的性能,保持较少的唯一URL数是很重要的。请确保你已经设置忽略了URL参数(比如你不希望session id不同导致系统认为它们不是同样的网页)。 - 我们推荐你使用Mysql性能优化工具Tuning Primer或者Mysql Tuner,它会给你优化Mysql配置的建议。
- 目前我们使用Mysql InnoDB引擎,在可靠性上会更好些。你可以通过调整Innodb配置来优化Mysql的性能。你可以增加innodb_buffer_pool_size选项值来适应内存大小,一般情况下它能够提高Matomo性能。我们建议将innodb_buffer_pool_size设置为MYSQL可用内存的80%(如果你使用的是8G以上的内存,这个比率可以更高些)
- 在Mysql配置中你也可以设置innodb_flush_log_at_trx_commit=2(参考),它可以增加追踪器的吞吐量。
- 阅读更多关于Innodb I/O优化的内容
- 我们推荐将MySQL的tmpdir指向内存中的文件系统如tmpfs,取代硬盘上的tmp目录。因为MySQL使用tmpdir创建并保存临时数据。
- 如果你的数据库空间有限,删除老日志是有必要的,比如说6个月前的访客日志。这样可以保持数据库的大小可被有效管理。
- 如果你的网站需要每月追踪1亿PV,Matomo(Piwik)可能会达到PHP的内存上限或Mysql限制或硬件限制。
优化网站追踪客户端
- 关于网站追踪客户端的性能问题,请阅读如何更快地加载Matomo Js追踪器,其中阐述了浏览器缓存,GZIP传输,DNS服务器的浏览器预加载和追踪客户端文件的预加载。
- 为了提高追踪速度,你可以以特殊的方式嵌入JS代码。比如说,在load事件之后嵌入追踪器JS,延迟追踪,甚至不加载JS追踪代码。你可以详细阅读为提高网站性能而嵌入Matomo追踪代码的几种不同方式。