记录日常代码延时高的问题

场景1  前端反映,首页index接口延时过高,几乎一秒才有响应

步骤一:定位问题代码  

因为该模块,线上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 异步处理,然后塞到响应里面返回!