问题描述:

部门新开发了一个BI系统,刚开始操作还好,后来越用越慢,有时候点击一个菜单,展示数据列表能等上两三秒,瞬间奔溃,于是想跟踪查看下到底是什么耗时这么久。

1、通过浏览器打开系统,选择指定菜单查看数据,通过谷歌浏览器开发者工具,查看时间信息如下所示,总共耗时1.8s,前端耗时

1.87ms,前端发起请求到后端返回信息耗时1.79s,分析基本上是后端耗时较多。
记一次后端sql执行导致性能问题的分析过程_第1张图片
2、通过监控后端服务器性能情况,主要是看内存和CPU,磁盘IO等,发现不存在性能问题

3、于是查看数据库,预估是数据库执行耗时较多

4、由于本人使用的mysql数据库,首先查看数据库是否生成日志:SHOW VARIABLES LIKE "general_log%";发现日志信息有自动生成(general_log的值为“ON”,general_log_file为日志存放路径)。
记一次后端sql执行导致性能问题的分析过程_第2张图片
5、如果没有开启,则执行以下语句:SET GLOBAL general_log = 'ON';

6、再次重复上面操作,查看菜单列表。

7、同时跟踪日志文件:tail -f general_log_file(日志文件路径)

8、获取到sql信息,拷贝到数据库中进行分析,发现程序没有对权限信息表进行缓存,每次执行查询操作都会去查询权限信息表,导致耗时,此处建议使用缓存来提升性能。

今天的知识介绍就到这里了,谢谢各位的观看,同时欢迎各位看官关注本人公众号,本人将在上面分享测试,开发,运维相关的资料和学习视频上传到上面,供大家一起学习讨论:
记一次后端sql执行导致性能问题的分析过程_第3张图片