如何发现?
apm发现慢请求 找到具体的路径url

如何定位?
观察那些有可能慢的方法,打日志,本地运行,有条件的(admin可以连生产只读数据库),没条件(crm造数据)

定位到具体哪个步骤慢
如何解决?
异步 程序 缓存 Sql
RecursionUtil 为了适应不同的类,不同的属性
/adminDept/queryDeptTree


每次都new实例

针对优化 (简化了一些,有针对性)

/crmCustomer/workbenchData
页面数字的显示

原版本---(走的是原来查询内容的接口)没有区别身份,全量查询,sql也是全字段查询

优化后 区分身份查询 去掉不必要的sql 只查id

SendMsgToBp2Job TaskSendMsgJob
这两个方法都调用admin的VX发消息的接口
发现5万的数据只有一万条数据的负责人是关注了的
SendMsgToBp2Job
原来
![]()
现在 只查关注的
- //优化后
-
- WxMpProperties.MpConfig mpConfig = wxMpProperties.swithWxConfig(useAppId);
-
- //当站长标记劳动者为【面试未通过】时,向劳动者的负责bp推送公众号模板消息,提醒bp做后续处理(筛选没有关注公众号的人)
-
- List<CrmCustomer> list =iCrmCustomerService.querySendMsgToBp2(mpConfig.getApplicationName());
获取标签的接口
本地不慢 打日志看时间不慢
一.带宽
二.返回的json压缩 去掉无用字段
~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
运营分析系统:招聘战力

统计背景:时间控件,输入当月,劳动者状态统计趋势,1-30号,每天数据
查询 wk_crm_customer 不同时间段,不同的统计维度;创建时间、上岗时间、入职时间、离职时间;推荐人(乙方公司下所有员工)

1.红色长方形耗时最长,接口拆分;
2.时间分段,推荐人 union all ,一次行查询整个时间段(整月),不同的时间段匹配在统计
3.不同时间字段统计,串行;优化为并行
适当的增加缓存(基于feign-client 设置redis缓存)

- show variables like "%slow_query_log%" ;
-
- SHOW PROCESSLIST;
-
- SHOW FULL PROCESSLIST;
-
- SHOW VARIABLES LIKE '%max_connections%';
-
- SHOW STATUS LIKE '%Connection%';
-
- -- 当前连接数
-
- show global status like 'Threads_connected';
可能存在短时间循环调用queryDB SQL语句量突然增加的情况。
可能存在多线程调用 queryDB SQL的情况。
可能存在慢SQL 被调用的情况。