客户最近一直反馈,客户页面打开比较卡,100条数据列表页基本都在15秒以上,但几次远程测试都是正常,就没有彻底去跟踪分析,今天再次反馈,觉得彻底排查一下。拿了一张A4纸张,想想都有哪些可能:
1、数据库数据量已经达到百万级别,查询语句需要优化
2、接口调用时间比较久
3、前端获取数据比较多,渲染用时比较久
有了思路,就按照这个思路一一去排查
1、数据库使用mysql,之前就开启了mysql的慢日志功能,使用的是默认参数,查看日志发现慢日志中并没有异常,于是决定修改查询时长记录大于1秒的查询并且记录无索引查询的SQL语句。
long_query_time =1;
log-queries-not-using-indexes = on ;
慢日志豁然开朗,数据越来越多,使用mysqldumpslow进行分析发现问题,使用expain对SQL进行详解,针对需要增加索引的字段增加索引。
同时对于SQL语句进行优化,优化方案参考:https://www.2cto.com/database/201801/716363.html
数据库优化后发现系统访问速度有所提升,但是依旧无法接受。
2、接口调试,使用谷歌浏览器,Network定位用时较长的接口,对该接口代码进行一行加一行屏蔽测试,最终定位出问题,代码逻辑出错,误将单次查询函数放到循环逻辑中,导致接口多余执行N次函数,浪费了大量时间,修改后接口速度提升了。
3、前端渲染比较慢,和前端工程师了解了一下,发现获取到100条数据,就直接去渲染100条,所以真个渲染的时间比较长,由于单屏幕只能显示20条数据,所以让前端进行优化,只渲染20条数据,当拖动列表页的滚动条时,再去加载下20条(未调整完毕)
至此1、2已经调整完毕,100条数据列表页显示维持在3秒,相信前端优化完毕后,能控制在1秒-1.5秒。













网友评论