Elasticsearch慢查询分析

es里面的操作,主要分为两种,一种写入(增删改),另一种是查询(搜索)

我们分别要识别出来,哪些写入操作性能比较慢,哪些查询操作性能比较慢,先要识别出来有性能问题的这些慢查询,慢写入,然后才能去考虑如何优化写入的性能,如何优化搜索的性能

搜索慢查询日志

无论是慢查询日志,还是慢写入日志,都是针对shard级别的,因为大家应该知道,无论你是执行增删改,还是执行搜索,都是对某个数据执行写入或者是搜索,其实都是到某个shard上面去执行的

shard上面执行的慢的写入或者是搜索,都会记录在针对这个shard的日志中

阈值的意思,就是说,什么叫做慢?搜索,5s叫做慢?还是10s叫做慢?或者是1s叫做慢?

比如说,你设置一个阈值,5s就是搜索的阈值,5s就叫做慢,那么一旦一个搜索请求超过了5s之后,就会记录一条慢搜索日志到日志文件中

shard level的搜索慢查询日志,会将搜索性能较慢的查询写入一个专门的日志文件中。可以针对query phase和fetch phase单独设置慢查询的阈值,而具体的慢查询阈值设置如下所示:

在elasticsearch.yml中,设置

index.search.slowlog.threshold.query.warn: 10s
index.search.slowlog.threshold.query.info: 5s
index.search.slowlog.threshold.query.debug: 2s
index.search.slowlog.threshold.query.trace: 500ms

index.search.slowlog.threshold.fetch.warn: 1s
index.search.slowlog.threshold.fetch.info: 800ms
index.search.slowlog.threshold.fetch.debug: 500ms
index.search.slowlog.threshold.fetch.trace: 200ms

而慢查询日志具体的格式,都是在log4j2.properties中配置的,比如下面的配置:

appender.index_search_slowlog_rolling.type = RollingFile
appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling
appender.index_search_slowlog_rolling.fileName = ${sys:es.logs}_index_search_slowlog.log
appender.index_search_slowlog_rolling.layout.type = PatternLayout
appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %.10000m%n
appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs}_index_search_slowlog-%d{yyyy-MM-dd}.log
appender.index_search_slowlog_rolling.policies.type = Policies
appender.index_search_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.index_search_slowlog_rolling.policies.time.interval = 1
appender.index_search_slowlog_rolling.policies.time.modulate = true

logger.index_search_slowlog_rolling.name = index.search.slowlog
logger.index_search_slowlog_rolling.level = trace
logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling
logger.index_search_slowlog_rolling.additivity = false

索引慢写入日志

可以用如下的配置来设置索引写入慢日志的阈值:

index.indexing.slowlog.threshold.index.warn: 10s
index.indexing.slowlog.threshold.index.info: 5s
index.indexing.slowlog.threshold.index.debug: 2s
index.indexing.slowlog.threshold.index.trace: 500ms
index.indexing.slowlog.level: info
index.indexing.slowlog.source: 1000

用下面的log4j.properties配置就可以设置索引慢写入日志的格式:

appender.index_indexing_slowlog_rolling.type = RollingFile
appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling
appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs}_index_indexing_slowlog.log
appender.index_indexing_slowlog_rolling.layout.type = PatternLayout
appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %marker%.10000m%n
appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs}_index_indexing_slowlog-%d{yyyy-MM-dd}.log
appender.index_indexing_slowlog_rolling.policies.type = Policies
appender.index_indexing_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.index_indexing_slowlog_rolling.policies.time.interval = 1
appender.index_indexing_slowlog_rolling.policies.time.modulate = true

logger.index_indexing_slowlog.name = index.indexing.slowlog.index
logger.index_indexing_slowlog.level = trace
logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling
logger.index_indexing_slowlog.additivity = false

把这个东西记录好了以后,就可以什么呢?es集群运维管理员,就需要经常每天去看看,正常情况下,慢查询应该是比较少数的。所以比如你每天检查一次,如果发现某个查询特别慢,就要通知写这个查询的RD,开发人员,让他们去优化一下性能。



 

参考:

https://www.jianshu.com/p/3e58d27a37fb

ElasticSearch数据库配置慢查询日志_IT_狂奔者的博客-CSDN博客_elasticsearch慢查询日志

https://www.jianshu.com/p/3d3e05e70425

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于ESElasticsearch)来说,大数据量查询速度慢可能有多种原因。以下是一些常见的解决方案和优化建议: 1. 确保适当的硬件资源:ES对于处理大数据量的查询需要足够的硬件资源支持,包括内存、CPU和存储。确保您的硬件配置足够满足您的查询需求。 2. 分片和副本设置:ES通过将数据分成多个分片并复制到多个节点来实现水平扩展和高可用性。合理设置分片和副本的数量,可以提高查询性能。 3. 索引设计优化:索引的设计对于查询性能至关重要。确保索引的字段类型正确,并使用合适的分词器和分析器。避免使用过多的字段或者不必要的字段。 4. 查询优化:尽量避免使用全文搜索查询,可以使用过滤器、聚合等更高效的查询方式。使用查询缓存来缓存频繁使用的查询结果。 5. 数据压缩和压缩算法选择:对于大数据量的场景,可以考虑使用压缩算法来减少磁盘空间占用和网络传输开销。 6. 确保网络连接稳定:ES是一个分布式系统,网络连接的稳定性对于查询性能至关重要。确保网络连接畅通,并且减少网络延迟。 7. 升级ES版本:ES的版本更新通常会包含性能改进和优化,因此考虑升级到最新版本。 这些只是一些常见的解决方案和优化建议,具体的优化策略还需要根据您的具体环境和需求进行定制。希望对您有所帮助!如有更多问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值