windows下排查typecho性能问题案例

群里面有个朋友,在windows下安装phpstudy并跑typecho,发现服务端响应很慢,TTFB超过2s以上。这里记录一下排查过程,给有需要的朋友参考下。 ![a1.png][1] 思路:整个网站代码执行,大体分三个阶段:apache+php解析器、php代码执行、mysql数据查询 ###首先,确认是环境问题还是php代码问题 -猜测:问题可能出在php执行环境上,譬如php如果开启了xd...

群里面有个朋友,在windows下安装phpstudy并跑typecho,发现服务端响应很慢,TTFB超过2s以上。这里记录一下排查过程,给有需要的朋友参考下。 ![a1.png][1] 思路:整个网站代码执行,大体分三个阶段:apache+php解析器、php代码执行、mysql数据查询 ### 首先,确认是环境问题还是php代码问题 - 猜测:问题可能出在php执行环境上,譬如php如果开启了xdebug的connect_back选项,则会导致xdebug卡主一段时间以等待环境就绪。 - 方法:在index.php代码最开始的位置,加一行代码 `die('xxx')`,重新访问。 - 结果:如果这个时候回应很快了,说明问题出在php代码。继续排查 ### 然后,确认是php代码问题还是mysql的问题 - 猜测:如果mysql查询很慢,也会导致整个网站响应很慢,所以确认一下是不是mysql数据过大导致查询卡主。 - 方法:直接停掉mysql服务,再观察网站的响应时间。(ps:原理很简单,让typecho报错,跳过mysql查询过程) - 结果:如果网站依然很慢,则说明问题出在php代码本身上。 ### 最后,出动profile分析工具,分析耗时函数 - 配置方法:开启xdebug扩展,并配置如下。配置完之后,重新运行一次,即可以在`profile_output_dir`目录下生成分析文件 ![a2.png][2] - 下载分析工具 工具直接使用`kcachegrind`,下载地址:https://nchc.dl.sourceforge.net/project/precompiledbin/kcachegrind.zip - 下载之后,使用kcachegrind打开上面的profile文件,即可非常清晰地找到问题原因: ![a3.png][3] 如上图,可以非常清晰地看到,问题出在php内置函数`mysql_connect`上。至于为什么这个函数会执行慢,各位就只能自己google了~ [1]: https://www.typechodev.com/usr/uploads/2017/03/998369044.png [2]: https://www.typechodev.com/usr/uploads/2017/03/635127881.png [3]: https://www.typechodev.com/usr/uploads/2017/03/3659491424.png
下一篇 1分钟前