访问php+mysql网站速度不稳定的故障排查
更新:HHH   时间:2023-1-7


本文内容主要是记录故障排除的思路,如有问题请指正。
在本地测试新建的网站各种流程顺利,上传至云端后访问网站不同页面开启速度不一,有秒开的,或者最长等120秒才打开的,偶尔还出现卡死问题。
最初认为上传的代码有问题
重新下载代码本地测试,依然流畅。
整理一下思路,分析有可能一下原因:
1.云端服务器的性能不如本地。(个人网站各种便宜)
2.网站访问延迟过高或不稳定。
2.图片压缩不够,网页开启加载时间过长。
3.php和mysql联动效率问题。

逐个排除一下
问题1:登陆云端后台查看服务器状态,cpu、内存、网卡流量一切正常。(没有人看的网站,当然一切正常)不存在性能不足的问题。

问题2 :通过本地ping 域名和用站长工具测试网络访问速度,基本在60~120ms,0掉包。不存在访问延迟和掉包问题。

问题3: 图片压缩不够,网页开启加载时间过长。通过chrome浏览器的-检查-Networ 功能查看页面加载情况

图片多数在30ms左右就加载完成了,故也不是网页开启慢的主要问题。

那就剩最后一个问题了:php和mysql联动。
提前登陆云端数据库后台,当访问网站出现卡顿的时候,数据库后台查看当前会话情况,发现有多个相同的查询语句处于锁等待的状态。问题找到了!
复制问题语句
SELECT DISTINCT biao_A.*
FROM biao_A, biao_B, biao_C,biao_D
WHERE biao_B.Net_id = biao_A.id AND biao_B.biao_C_id = biao_C.biao_C_id AND biao_C.biao_C_id = 99

问题出在多表联查语句上: “FROM biao_A, biao_B, biao_C,biao_D ” 整个条件语句“WHERE biao_B.Net_id = biao_A.id AND biao_B.biao_C_id = biao_C.biao_C_id AND biao_C.biao_C_id = 99 ”中与biao_D都没有关联,这个失误导致与本次查询结果不相关的biao_D参与了进来,大大降低了查询效率,直接影响网站的页面呈现。

应在语句中删除 biao_D
本地测试mysql查询速度

修改前:0.130秒

修改后:0.0007秒

将修改的代码上传至云端,再次访问网站速度明显加快。

返回web开发教程...