Access插件会严重拖慢Typecho运行
浏览 2999 | 评论 2 | 字数 940
卖女孩的小火柴 - 搬砖中
2021年04月11日

年初的时候博客切换到了国内服务器运行,按理而言访问速度应该更快了,但我总感觉有什么不太对劲的...

前言

一开始只是看各大搜索引擎爬虫的耗时时间,一路来到了1s/请求,我寻思我这Typecho也不至于跑这么慢吧,但一直没找到具体原因。
直到前段时间我用17ce测我首页速度的时候,CPU直接满了,17ce达到了喜人的平均3s+的好成绩,全国都红了。
这谁受得了?难怪蜘蛛爬取耗时巨大。

原因

经过反复测试,瓶颈在数据库上。真是奇了怪了,我数据库是有查询缓存(Query Cache)的,而且就一个首页,怎么会搞成这个样子?
打开sql慢日志,时间直接设置为1s,17ce再来一发。
好家伙,慢日志直接写了几百kb上去...

点开查看发现是以下语句:

SELECT DISTINCT `content_id` as `cid`, COUNT(1) as `count`, typecho_contents.`title`  FROM typecho_access_log
INNER JOIN typecho_contents ON typecho_access_log.`content_id` = typecho_contents.`cid` 
WHERE  (typecho_access_log.`content_id` <> '' )
GROUP BY typecho_access_log.`content_id` 
ORDER BY `count`  DESC;

看完了之后直接人都炸了,这是人写的SQL?
typecho_access_log这个表就是Access插件的日志表,详细记录了每一个访客的各种信息。
这个SQL 执行了,全 盘 扫 描!
对于我这个小博客而言,也就是15w进行全盘扫描,对于InnoDB数据引擎而言简直就是灾难!
最离谱的是,由于每次访问都会增加一条,所以,Query Cache直接失效,每个访问都会重新计算。

于是,我的数据库就炸了。。。

解决

解决个锤子,直接删插件删表,麻溜的!

本文作者:卖女孩的小火柴 - 搬砖中
本文链接:https://www.shinenet.cn/archives/190.html
最后修改时间:2021-04-11 23:20:56
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
评论
如果可能,请填写真实邮箱,有回复会送至邮箱。请不要水评论,谢谢。
textsms
支持 Markdown 语法
email
link
评论列表
已有 2 条评论
2021-05-17 17:26
哈哈哈哈哈,我要笑死,太可爱了”解决个锤子,直接删插件删表,麻溜的!“戳到笑点了 ,我还在用可能服务器耐造,17ce 并发测也没跑满
2021-05-17 17:36
@Qicloud 这个插件改版(BUG修复修复修复修复修复版)很多很多 说不定你的这个没啥问题