背景:公司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語句。