[phper进来]discuz发帖慢的问题分析

chenwenli 发布于 2013/11/09 14:59
阅读 2K+
收藏 1
因为论坛的正常发帖有时会超过2s,最严重的能延迟到21s才能返回结果。正常状态下0.2s可以结束。

为了能够了解发帖 程序的流程消耗的时间,我在source/include/post/post_newthread.php 里,

特别是这一行(源代码第281行 左右,我插了时间函数,所以建议你们查找下):
插入了timer,(时间结果在【dbinsert】节)
 
很明显,这一行调用某个model实例的函数,
然后我继续展开(代码实现在 source/class/model/model_forum_thread.php)
我在这个类的newthread函数内部 代码块的头部 和尾部 插入了timer代码(时间结果在【block】节)。




然后替换服务器的同一文件,生产环境下会把时间统计结果 记录在一个日志文件上。
跑了半天,把日志文件下到本地进行分析,得到结果如下。

【dbinsert】是第一张图片的代码包裹的测试结果

【block】是第三张图片 对函数实现的代码包裹的测试结果
注意红线: 上面一条是正常的;
            下面是不正常,而且表明 发帖提交后花了10s才返回结果。而且dbinsert是10000ms,而block才不到100ms。
        我想知道 这个时间差 是消耗到哪里去的?

请看帖的大牛 帮忙回答,具体不懂的可以回复我。我怀疑是进程一下子被锁?。不知道是不是这个原因。
这个”消失的时间“问题怎么解决呢?


加载中
0
chenwenli
chenwenli
这个问题已经解决了。发帖后 会有个手机图片压缩(压缩两个尺寸)。关闭这个功能(后台-》 全局》上传设置 》 是否生成手机版缩略图  选择否)就不会出现很慢的原因。上面的时间消失 经过xhprof分析,是class_image的thumb方法占了很大的比例。每一张调用两次。。
0
lazyphp
lazyphp

对dz不太熟悉,友情帮顶了。

之前发帖子流程么?是最近出现么?最近加过什么东西呢?还是换过服务器环境呢?

chenwenli
chenwenli
从2.5升级到3.1,也装了一些插件,没法排除外部因素~~
0
mark35
mark35

http://xiaozhong.biz/thread-274-1-1.html

dz用的是mysql myisam引擎,发帖量大时表锁严重,无法解决。只有拿硬件去堆

chenwenli
chenwenli
并发大会锁表。但是目前发帖量并没有那么频繁,而且升级前也似乎没有这个现象。看了你给出的这篇文章,焦虑的问题却给不出答案~~
0
a
ackeep
这么恐怖,,,,
0
a
ackeep
那广大站长不是糟糕了
0
mark35
mark35
没事别升级,功能与速度平衡的是7.2。以后的X系列越来越臃肿缓慢华而不实
0
南湖船老大
南湖船老大
show full processlist 可以看到导致阻塞的SQL语句,有针对性地优化
0
月影又无痕
月影又无痕
不需要那么麻烦,你开启mysql慢查询日志记录并分析即可。
chenwenli
chenwenli
开了慢查询日志跑了一天,没有记录到发帖超时时间为3s的相关语句
0
月影又无痕
月影又无痕

引用来自“月影又无痕”的答案

不需要那么麻烦,你开启mysql慢查询日志记录并分析即可。
必须记录到1s或0.5s
返回顶部
顶部