因爲該模塊,線上arthas禁用了,沒辦法,老老實實打日誌,定位具體哪裏耗時比較多
發現,接口整體時延在800ms左右,但第一步查詢當日訂單數的時候,就已經花了500多ms了,其他查詢一般都是幾十ms左右,找到問題所在。
看下獲取邏輯,其實就是單純從表裏查詢數據然後走dubbo返回,那就更nice了,sql出問題的概率大,到測試環境看下執行計劃
全表掃,沒走上索引,線上百萬級數據,肯定會比較慢的,再看下錶的索引如何建的。
看了下,所有的查詢,其實都是company_id 單獨查詢, 或者company_id + shop_id 搭配着查詢
適合建立聯合索引,建好了再看下效果
恢復正常水平,測試環境 300ms左右,線上 100ms以內
思考: 問題修復了,從代碼角度 這個接口還有沒有可以優化的地方了?
接口整體邏輯屬於: index頁面展示不同的數據,分別調用A、B、C接口,返回A、B、C數據返回給前端展示,三個接口之前數據其實互相不干擾。
現在是同步往下依次調用,其實可以使用countDownLatch或者CyclicBarrier 異步處理,然後塞到響應裏面返回!