目录

Elasticsearch查询优化问题

概述

下面是推荐系统中使用到 ES 组件作为召回系统的关于查询性能优化的 case。

分析

先分析三个图。

推荐系统请求分布图

根据图示可以得出,每天会有三个请求高峰,分别在9-10am,15-16pm,21-22pm。

/elasticsearch%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%E9%97%AE%E9%A2%98/image_1cckhdgpeac9nm81euajadu609.png

召回超时分布图

根据图示可以得出,每天仍然会有三个召回超时的高峰,时间分布同请求分布图。此外可以明显看到,每天6:30-7:30am,会有一个异常高点。

/elasticsearch%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%E9%97%AE%E9%A2%98/image_1cckhhohd1bs5h6o1l8p1g0rrl79.png

ES画像集群文档索引分布图

根据图示可以得出,每天6:30-7:30am,会有一个索引高峰,提示此时间点有大量的 ES 写入操作。

/elasticsearch%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96%E9%97%AE%E9%A2%98/image_1cckhl4i1vv0gv71g6t19ghv6a13.png

批/流任务时间点

根据任务的起始时间,已经时长,列出几个可疑项目,以下任务均在5点到7点间运行,并且写入 ES,结束时间在7点到8点间,其中有任务是一直在早上第一个请求高峰一直持续运行的。另外,6-8am 开始并且结束,持续时间比较短的任务数量也不少。

1
2
3
pi-batch-etl-proj.documentContent.DiscussRec
pi-batch-etl-proj.resume.ResumeParquet2HbaseEs
pi-batch-etl-proj.resume.AlsEnt2Ent

总结

综上所述,基本可以排除超时尖峰7am 前后有异常查询,原因是此时 ES 索引压力同样存在尖峰,可以判定超时尖峰的产生是因为该时段存在大量的 ES 写入操作。重点应该去排查是否存在批任务与推荐系统请求早高峰有重叠的情况,在调整好业务流程的基础上,避免在三个请求高峰中进行大量的 ES 写入。

警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。