phpwind8.7 突然发现Handler_read_rnd_next一天就跑了238G之巨

[ 2012-11-30 13:46:41 | 作者: admin ]
字号: | |
[color]im286: 排查之后认定受影响范围:除新装8.5之前升级上来的任何PW版本,有好奇心的可以去phpMyadmin查看一下自己MYSQL状态Handler_read_rnd_next部分,如果没人帮你排查过,你也中枪了……[/color]

故事背景:最近服务器老是不稳定,经查CPU有点离奇居高,以前平常也就10%以下,现在居然老会飙到20~40%不等,最主要的是Mysql占用的CPU线程一直高于40%~100%,虽然服务器是CPU*2 8核 内存8G还扛得住,但是总感觉论坛开始卡顿了,也没当回事,终于在前天mysql服务崩溃了,重启了之后开始关注这个问题,终于在phpMyadmin状态发现Handler_read_rnd_next一天不到就跑了 238G,之前没看这个数据,那不是n*T?!!!

不懂程序,不懂数据库,只好一边搜索一边排查,走了好多弯路:

1、优化my.cnf无效
2、开启慢查询监测,无效
3、最后就死盯着top看CPU占用,同时监测mysql processlist,终于抓到这个 “UPDATE pw_hits_threads SET hits=hits+1 WHERE tid='xx” 一直跳,感情是帖子点击率点一次刷一次啊
4、去phpMyadmin里面一看, pw_hits_threads 这个表居然没建索引……于是直接用pma在表结构里给tid建索引
5、再看 top,mysql进程CPU占用一下子安静了……其时已到半夜,基本趋近于0%
6、十五分钟服务器loading也一下子从1.x降到了稳定的 0.6左右

前请回顾:论坛的升级之路,4.32(跑N年)~ 7.5(2年) ~ 7.5upto8.5.php(防止数据库缺失的升级跳板而已) ~ 8.7(跑了一年了,强大的服务器终于撑不住了 )

在 7.5upto8.5.php 的 8.3 to 8.5 发现了这个坑爹的sql语句

'pw_hits_threads ' => array("tid int(10) unsigned NOT NULL DEFAULT '0', hits int(10) unsigned NOT NULL DEFAULT '0'"),

为毛不是'pw_hits_threads ' => array("tid int(10) unsigned NOT NULL DEFAULT '0', hits int(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (tid)"), 捏……

再一个个包查看官方所有的安装包和升级包,这个点击率异步更新+memcache功能是8.5时加上的,新安装脚本里有建索引,升级包这全部都忘了

后记:好奇,PW上搜了一下关键词 pw_hits_threads,有人提过这问题,不了了之,百度上搜了一下 ,找到这个:http://phpwind.me/220_e.html ……哈里路亚!哈里路亚!

http://www.phpwind.net/read-htm-tid-2764634.html
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1918

这篇日志没有评论。

此日志不可发表评论。