[听云] 一个discuz论坛的性能调优

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了[听云] 一个discuz论坛的性能调优脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

已经受不了某BBS的龟速了,自己又不太可能去直接写探针插入php文件里面进行监控,毕竟是很复杂的discuz,加之昨晚在一台基本没人访问服务器上试用了听,于是打算在这台bbs的服务器上部署听云、监测性能。

原有数据:

最高在线人数1500人的某论坛discuz

clipboard.png

原有访问时间统计大概在10-12秒左右,图中所示为调整后的响应时间。

安装听云:

  1. Gentoo系统,所以下载bin安装包。

clipboard.png

  1. 不出所料,听云是无法识别到底是哪个php的,服务器安装php-cliPHP-CGIphp-FPM三个sapi,于是听云安装成了cli-php5.5的插件。

[听云] 一个discuz论坛的性能调优

手动
mv /etc/php/cli-php5.5/ext-active/networkbench.ini mv /etc/php/fpm-php5.5/ext-active/
nano /etc/php/fpm-php5.5/ext-active/networkbench.ini,修改application name
/etc/inIT.d/php-fpm restart

等待测试报告:

[听云] 一个discuz论坛的性能调优

关键过程1

[听云] 一个discuz论坛的性能调优

这里有一个SQL查询瓶颈,在PRe_home_notification表,于是进入查询。
数据表大约400M大,select count查询大约在4.3S左右,于是肯定这里需要有问题。
查询网络,搜到相关资料:“home_notification表会有定时任务进行清空。”

于是grep -r home_no www,搜到www/source/include/cron/cron_cleannotification.php文件,进入discuz后台查询,没有这个文件,手动添加这个计划任务,执行后,pre_home_notification表瞬间变为4M大小。也不再收到相关的关键过程记录。

关键过程2

解决1后,仍旧有很大的延迟,而且响应似乎完全没有改变,于是继续查询关键过程,发现关键过程2:

[听云] 一个discuz论坛的性能调优

是在seccheck中调用两次fgets,直接导致网站访问速度慢。
搜索seccheck的代码:

[听云] 一个discuz论坛的性能调优

文件在www/source/class/helPEr/helper_seccheck.php,可以看出有一个cloudip,那么根据后台功能猜测是“云IP屏蔽”之类的功能,进入后台关闭。

结果

这次直接命中要害:
seccheck的延迟直接没有,平均值也变为0.044秒。

[听云] 一个discuz论坛的性能调优

seccheck的真面目:

[听云] 一个discuz论坛的性能调优

结论

貌似xdebug也是可以进行这种性能调试的,以后好好研究下。

后记

第二天观察听云报告,有些访问有的时候卡在一个文件很长时间:

[听云] 一个discuz论坛的性能调优

打开这个文件查看,发现这个问题出在:

[听云] 一个discuz论坛的性能调优

问题出在是从discuz官方自动获取标签的功能。
嗯,应该去找站长联系取消标签功能,或者类似的。

脚本宝典总结

以上是脚本宝典为你收集整理的[听云] 一个discuz论坛的性能调优全部内容,希望文章能够帮你解决[听云] 一个discuz论坛的性能调优所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。