项目场景:
2024年3月的某一天开始,生产环境ES集群CPU使用率较之前出现了明显升高的现象,峰值涨了10%~20%左右。
期间可以看得到,es的读写较之前没有什么波动
原因分析:
1、怀疑是业务操作频率增加导致的
观察了业务的qps,日志:线索的增加更新并未有大波动
观察各个业务表数据,并未有大量增加
2、怀疑代码修改,导致es请求变多
看了最近提交的代码,并不会引起es请求变多
3、怀疑代码修改,导致es查询变长
某个同学改了es查询逻辑,加了两个should,引起了查询变久
通过观察跟进接口的时长,发现确实变长了
解决方案:
查询线索跟进记录的接口,历史原因,现在查询条件比较复杂,光最外层的should条件就有7个(都满足的话),再加上should条件内部的一些其他组合条件,使得QSL变得复杂无比,性能也就不好。
从代码来看,这个需求完全可以换种实现方式(比如:先查询全量,再过滤不符合条件的),尽可能的减少查询条件提升性能。