记录一次线上优化过程,一行代码结构化输出 es查询监控

1. 架构

前端 uni-app
后端 springboot +es +mysql
运维,算法,数据,后端,前端
分开,所以难以定位

2. 解决思路

是否运维机器配置问题
是否前端渲染问题
是否前端请求问题

  1. 首先打开前端调式,从前端到后端,查看接口调用,及其不规律, 有时快有时慢

在这里插入图片描述

  1. 加日志节点,切换日志级别

在这里插入图片描述

  1. 加切面 结构化输出es 查询 , 定位问题代码

Strings.toString(queryBuilder, true, true);

在这里插入图片描述
在这里插入图片描述

上面第一个是业务需求必须多个属性一起查询 ,不过因为数据量比较小,所以性能还算可以
第二个明显是问题关键了,这个表中很慢,看查询语句我这里使用的是must + 结合 ,我这里不关心得分应该换成filter

更换之后发现效果并不明显,显然不是主要原因

直接在kibana中查询 文档中的总条数,已经达到了千万级,但是es 作为大数据时代的索引数据库,虽然一个文档的内容过多,但是性能不应该只是这样

在这里插入图片描述

接着找运维分析es的集群结构,发现虽然硬盘与内存都还有很大的空余,由于是测试库,使用的是单节点… 所以到此,问题关键已经很明显

在这里插入图片描述

性能差的主要原因有以下几点:

  1. 首先,语句层,如果不关心得分应该使用filter
  2. 其次,逻辑层,es 中应该只存放索引关键属性,而不是作为存储主力,数据量大可以考虑更换为 es+hbase
  3. 然后,数据层可以考虑采取集群搭建es , 会比单机版性能提升很高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木秀林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值