1
chenwl OP 发现有帐号才能登录,我就发下面的
因为论坛的正常发帖有时会超过2s,最严重的能延迟到21s才能返回结果。正常状态下0.2s可以结束。 为了能够了解发帖 程序的流程消耗的时间,我在source/include/post/post_newthread.php 里插入了timer, 特别是这一段 ?1 源代码第281行 左右(我插了时间函数,所以建议你们查找下), 然后我继续深入,即 ?1 代码实现在 source/class/model/model_forum_thread.php。 我在这个newthread的函数内部的头部 和尾部 也插入了timer代码。 ?1 然后替换服务器的同一文件,生产环境下会把时间统计结果 记录在一个日志文件上。 跑了半天,把日志文件下到本地进行分析,得到结果如下。 ?1 [dbinsert] 是第一张图片的代码包裹的测试结果 [block]是第三张图片 对函数实现的代码包裹的测试结果 注意红线,上面一条是正常的,下面是不正常,表明 发帖提交后花了10s才返回结果。而且dbinsert是10000ms,而block才不到100ms。 我想知道 这个时间差 是消耗到哪里去的? |
2
chenwl OP |
3
mahone3297 2013-11-09 14:22:57 +08:00
所以,看你的截图,时间是耗在 newthread 里面了。估计是数据库执行慢。看下mysql慢日志
|
4
chenwl OP @mahone3297 数据库操作在model块里,model的block消耗的时间才不到100ms。但是业务层的关键一行代码 (消耗10000ms),代码展开来就是这个model,函数执行才(100ms)。从model看不出来数据库 慢。倒是业务层那边无故多耗了。所以有此问。
|
5
akira 2013-11-09 17:45:38 +08:00
获取tid 和 pid那两句,你就这么肯定是没耗时的?
|
6
shiny 2013-11-09 21:41:47 +08:00
对于php 性能问题,首先推荐使用 facebook 出品的 xhprof,完整记录了每个函数的时间开销,还可以绘图表示。
其次,应当开启 mysql 的慢查询,确定不是数据库的原因。 |
8
raincious 2013-11-09 22:31:19 +08:00
楼主那样调试太慢了,而且找不到具体出状况的调用。
建议安装XDebug开启Profiler功能或者XhProf再看。 |