ES的性能优化

我们在很多场景下会用到ES帮助我们解决搜索问题,但是很多人了解只是停留在表面,如何深入的使用ES,并做针对性的性能优化呢?

批量提交

当大量的写任务时,可以采用批量提交的方案,但是需要考虑每次提交数据量的最优性能,这样可以根据网络情况,集群情况,数据大小控制批量写入的数量。

  • 可以一次批量写入5M~15M开始,直到性能没有提升时结束。
  • 逐渐增加并发数,使用监控工具观察CPU,IO,网络,内存等情况。
  • 如果抛出EsRejectedExecutionException错误,说明集群已经到达处理瓶颈了,可以适当增加集群节点。

优化存储设备

现代服务器上,磁盘往往是系统的最大瓶颈。 并且ES本身是磁盘使用密集型的服务,所以在磁盘能力提升后,集群整体性能会大幅度提高。

  • 条件允许,强烈建议SSD,SSD相对机械磁盘具有超高的读写速度和稳定性。
  • 采用RAID0,可以提升写入速度。
  • 配置ES在多块磁盘同时进行读写。

使用合理的段合并

Lucene以段形式存储数据,当新数据创建索引时,会自动创建一个新段,所以在一个索引文件中包含多个段。数据越多后,索引段越多,需要消耗的文件句柄及cpu就越多。

Lucene后台服务会定期计算庞大的段合并工作量,所以:

  • 当段合并速度落后索引写入速度时,为避免堆积,es会把写索引线程数量降低到一个,并打印告警信息。
  • 为防止因为段合并影响搜索性能,es默认对段合并进行限制,默认20m/s。

减少refresh次数

Lucene为提高写性能会采用延迟写入方式,只是将数据写入内存中,当延迟大于1s时,会触发一次refresh,refresh会把内存中数据以段形式刷新到操作系统文件缓存系统中。

数据以段形式刷新到操作系统的文件系统后才可以进行搜索,所以如果搜索实时性要求不高,可以增加延迟,可以减少段数量,降低合并压力。

减少flush次数

Translog数量达到512m会触发一次flush。主要为了把文件缓存系统中段数据持久化到磁盘,这个过程比较耗时,可以设置index.translog.flush_threshold_size参数修改缓存数据量,减少刷新次数,比如可以增加一倍。

减少副本数量

es的副本可以保证集群可用性,提高搜索并发能力,但是降低写入性能。 因为文档写入内容需要同步副本。

如果大批量导入可以关闭index.number_of_replicas:0,写入成功后在开启副本。

转载于:https://my.oschina.net/u/1000241/blog/2988918

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch 是一个高性能的分布式搜索引擎,但是在处理大量数据时,可能会出现性能瓶颈。以下是一些 Elasticsearch 性能优化的建议: 1. 确保 Elasticsearch 集群的硬件资源充足。例如,CPU、内存、磁盘空间等。可以使用 Elasticsearch 的监控工具来监测集群资源的使用情况,以便及时进行扩容。 2. 对于大型数据集,使用分片可以提高 Elasticsearch 的性能。可以考虑增加分片数量,以提高搜索和写入的速度。 3. 使用合适的索引设置,例如合理的分词器和分析器,可以提高搜索效率。 4. 避免使用过多的查询,因为每个查询都会占用系统资源。可以使用缓存技术来优化查询性能。 5. 合理设置 Elasticsearch 的 JVM 堆内存大小,以确保 Elasticsearch 有足够的内存来处理数据。 6. 使用 Elasticsearch 的缓存机制,例如字段数据缓存、过滤器缓存等,可以显著提高搜索性能。 7. 对于写入频繁的场景,可以考虑使用异步写入方式,避免写入操作对搜索性能产生影响。 8. 对于长时间运行的查询,可以考虑使用 Elasticsearch 的 scroll API,以避免在内存中保留大量数据。 9. 定期清理 Elasticsearch 中的过期数据,以减少硬盘空间占用和搜索性能受到的影响。 10. 使用 Elasticsearch 的监控工具来监控集群性能,并及时处理异常情况,以保证 Elasticsearch 的高可用性和高性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值