网站慢是所有站长都会遇到的问题。但"慢"有很多种——DNS慢、网络延迟高、后端响应慢、前端渲染慢——排查方向完全不一样。这里说一套从外到内的排查流程,按顺序走基本能找到问题。
第一步:确认是哪里慢
先打开Chrome开发者工具的Network面板,勾选Disable cache,刷新页面。看瀑布图(waterfall):
如果第一条(HTML文档本身)就等了很久才返回——问题在服务端。
如果HTML很快但JS/CSS/图片加载慢——问题在静态资源或CDN。
如果所有资源加载完以后页面还在转——问题在前端JS执行。
第二步:查DNS和网络
用 curl -w 看各阶段耗时:
curl -w "DNS: %{time_namelookup}s | Connect: %{time_connect}s | TTFB: %{time_starttransfer}s | Total: %{time_total}s
" -o /dev/null -s https://你的网站
DNS超过200ms说明DNS服务商不行。Connect超过500ms说明服务器网络或者机房的线路有问题。TTFB超过1秒说明服务端代码或数据库需要优化。
第三步:查服务器资源
SSH上去 top 看一眼:
CPU idle低于10%——进程在抢CPU。看哪个进程占得多,如果是php-fpm可能是代码有死循环或大量计算。
load average超过CPU核心数——排队了。可能并发太高,考虑加worker进程或上负载均衡。
内存free低于200MB——可能是内存泄漏或者配置太低。free -h 看一下。
IO wait超过10%——磁盘读写瓶颈。iostat -x 1 可以看到具体哪个盘的等待时间高。如果是MySQL把临时文件写到了机械盘,换SSD或者调tmp_table_size。
第四步:查数据库
MySQL慢查询日志是宝:
SET GLOBAL slow_query_log = 1; SET GLOBAL long_query_time = 0.5;
然后 tail -f 慢查询日志,刷新几次页面,看哪些SQL执行超过0.5秒。EXPLAIN一下,大概率缺少索引或者全表扫描了。
第五步:查前端
服务器响应快但页面"用起来慢"?打开Performance面板点record,操作一下页面,看Main线程有没有长任务(红色三角标记)。超过50ms的任务会导致用户感知到的卡顿。
常见问题:首屏加载了不必要的大JS包、第三方统计/客服脚本阻塞渲染、没做代码分割。
总结
从外到内:瀑布图→DNS/网络→服务器资源→数据库→前端JS。按这个顺序来,80%的慢站能在半小时内定位到原因。
小编有话说
作为一个在手机技巧行业摸爬滚打12年的从业者,我买过十几款手机了,从诺基亚功能机到现在的折叠屏,发现最实用的永远是续航长+系统流畅的那一款,参数都是虚的。
你用过最耐用的电子产品是什么?我的一台ThinkPad用了8年还能正常开机。
还木有评论哦,快来抢沙发吧~