宝塔linux面板, 服务器日志分析与流量统计这款插件的mysql版优化。

时间:2024-02-21 12:06:25

 在花1块钱,购买了那个《服务器日志分析与流量统计》这个插件, 用来分析日志和流量, 当www.wxtv.net流量巨大, 短短几天就产生了8百万条网站日志,  使用的是mysql存储日志的方式,   该插件的作者几乎没有优化过mysql存储方式(我也不知道sqlite方式有没有优化),  大几百万的日志, 查询几乎打不开, 还把整个mysql拖死。 打开mysql的慢日志查询, 发现全是统计的语句超时了。 

 

慢日志记录:

SET timestamp=1590377705;
select website,ip,CAST(time AS CHAR) AS time,httpstatus,size,httpmothed,pageurl,shebieinfo from weblogs where website=\'www.wxtv.net\' and time>=\'2020-05-2100:00:01\' and time<=\'2020-05-2123:59:59\' and shebieinfo like \'%baidus%\' order by time desc limit 0,100;
# Time: 200525 11:35:10
# User@Host: wlog[wlog] ******  Id: 1230472
# Query_time: 4.893739  Lock_time: 0.000176 Rows_sent: 1  Rows_examined: 2227923
SET timestamp=1590377710;
select count(ip) from weblogs where website=\'www.wxtv.net\' and time>=\'2020-05-2100:00:01\' and time<=\'2020-05-2123:59:59\' and shebieinfo like \'%baidus%\' order by time desc;

  

解决办法:

增加weblogs表的time字段的索引。 操作步骤如下:

 

1. 点击左边菜单“数据库”。

2. 选择当时日志配置的mysql数据库, 点击管理,打开phpMyAdmin。 

3.  在phpMyAdmin中, 选择日志的数据库。  点击结构。 

 

4. 点击time字段操作列中的索引, 给time字段新建索引。  

 

 

建好索引后, 再打开《服务器日志分析与流量统计》这个插件, 查询速度变成了秒级。 

 

PS: 该款插件只卖1块钱, 所谓1分钱一分货, 作者在mysql方式上, 几乎都没有测试。  买过来, 可以打开它的源码, 修改代码, 在服务器上进行优化。