api接口性能优化问题

背景:公司Saas产品列表页接口响应时间长,列表页速度体验差,亟待优化。

 一、接口性能诊断工具Arthas

1.下载及安装详见以下链接:https://alibaba.github.io/arthas/manual-install.html

2.按1所述步骤,启动后弹出页面,点击connect即可,如下图

3.输入命令:trace -j 类的完整路径名 方法名   ,如下图

4.参数解释

 

红色标注的是整个方法中最耗时的方法;

min是方法执行最少的时间,max是方法执行最多的时间,total是方法执行的总时间,count是方法执行的次数

二、优化方法

1.sql语句优化(mysql数据库)

使用具体的列而不是使用*;

先EXPLAIN分析一下: sql_no_cache:不使用mysql缓存

查看缓存的命令:SHOW VARIABLES LIKE '%cache%';
                             SHOW STATUS LIKE '%qcache%';

EXPLAIN 
SELECT sql_no_cache c.*,
	u.thumbnail as image_url,
	u.category_id as category_id,
    u.barcode as barcode
FROM tb_product AS u
RIGHT JOIN
	tb_outstock_product AS c
ON
	u.id = c.product_id
WHERE c.del = 0 AND c.corpid = 1 AND c.out_warehouse_id = 1157
ORDER BY CONVERT(c.product_name USING gbk) ASC;

结果如下:没有使用临时表

如果使用临时表的话,则要设法不用临时表,详见[产生临时表的场景]https://www.cnblogs.com/tlijian/p/3750795.html

2.程序优化,根据Arthas提示的方法耗时进行优化,将耗时多的方法针对性优化,同时尽量减少数据库的连接操作。

3.mysql有缓存,相同的sql语句会查询缓存,但是最好还是减少查询相同sql语句。

发布了15 篇原创文章 · 获赞 15 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/llllllllll4er5ty/article/details/84876300