Discuz 防水墙插件 占用CPU过高问题

这两天帮人解决一个网站运维的问题,问题是CPU的占用率时不时的到达100%。

环境是CentOS 5.2 + MySQL +Apache + PHP ,含有Discuz站(X2.5)和Dede站。

刚开始以为是MySQL或者Apache配置的问题。于是执行了一揽子的优化计划。但是后来就知道,出现这种问题,而且负载量也不高的情况下,肯定是程序出了问题。

应该第一时间记录Apache、MySQL的日志,从中找问题。但是走了弯路,跑到性能优化上去了。

设置MySQL日志,5.5版本的需要设置general-log

          log-output=FILE      设置日志用文件存储。

           general-log_file = file_path_of_log  设置日志文件保存在那个文件里,(/mnt/mysql/data/mylog.log)
    general-log=1         开启general-log 功能。
    slow-query-log=1    开启slow-query-log 功能(是对日志的一种筛选,只记录查询时间超过指定值的查询)
    log-bin = 0               开启log-bin 功能(不做主从的话一般不需要开启)

最后在MySQL的日志中发现了问题,就是CPU上升到100% 的时候,有一条查询会疯长!!

   SELECT authorid FROM pre_forum_thread where tid=69817 ORDER BY tid DESC

而且这条语句之前会有

SELECT tid FROM pre_forum_threadmod where reason='防水墙自动处理' and dateline>360 ORDER BY tid DESC

这说明,Disduz会自动将防水墙过滤的主题搜索出来,然后再找到他们发布者的authorid。这是“防水墙扩展插件1.0“版本的BUG!!

系统中垃圾信息有将近三万多条,所以每次系统触发查询,就一下子三万多条查询涌向MySQL,负载自然就起来了。如果同时触发了多次,

系统基本就死掉了。

解决方法:

    1. 清空回收站中的垃圾信息

    2. 升级 防水墙  插件到1.5.1版本,升级  防水墙扩展  插件到1.5.1版本

重新运行服务,四个小时,CPU占用率在20%左右,从没超过50%。问题解决!

 

PS:

1.  MySQL  配置文件优化,由于是MyISAM的引擎,因此设置key_buffer_size 378M (内存1G) 等等。 

http://www.sudu.us/linux-mysql-optimize/

http://www.fwvv.net/info/2007/12/06/20071206-54032.shtml

2.  Apache优化,主要是MPM优化,设置了prefork方式的各种参数。

转载于:https://www.cnblogs.com/wpjsolo/archive/2013/04/26/3045079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值