zoukankan      html  css  js  c++  java
  • es性能调优---写优化操作

    ES 的默认配置,是综合了数据可靠性、写入速度、搜索实时性等因素。实际使用时,我们需要根据公司要求,进行偏向性的优化。

    写优化

    假设我们的应用场景要求是,每秒 300 万的写入速度,每条 500 字节左右。

    针对这种对于搜索性能要求不高,但是对写入要求较高的场景,我们需要尽可能的选择恰当写优化策略。

    综合来说,可以考虑以下几个方面来提升写索引的性能:

    • 加大 Translog Flush ,目的是降低 Iops、Writeblock。
    • 增加 Index Refresh 间隔,目的是减少 Segment Merge 的次数。
    • 调整 Bulk 线程池和队列。
    • 优化节点间的任务分布。
    • 优化 Lucene 层的索引建立,目的是降低 CPU 及 IO。

    ①批量提交

    ES 提供了 Bulk API 支持批量操作,当我们有大量的写任务时,可以使用 Bulk 来进行批量写入。

    每次提交的数据量为多少时,能达到最优的性能,主要受到文件大小、网络情况、数据类型、集群状态等因素影响。

    ④减少 Refresh 的次数
    
    Lucene 在新增数据时,采用了延迟写入的策略,默认情况下索引的 refresh_interval 为 1 秒。
    
    Lucene 将待写入的数据先写到内存中,超过 1 秒(默认)时就会触发一次 Refresh,然后 Refresh 会把内存中的的数据刷新到操作系统的文件缓存系统中。
    
    如果我们对搜索的实效性要求不高,可以将 Refresh 周期延长,例如 30 秒。
    
    这样还可以有效地减少段刷新次数,但这同时意味着需要消耗更多的Heap内存。
    
    如下所示:
    
    index.refresh_interval:30s

     

     

     

     

  • 相关阅读:
    我眼中的性能测试工程师
    珠海沙龙 《如何Hold性能测试》圆满结束!
    Silverlight性能测试工具
    性能测试十大误区
    珠海沙龙 《如何Hold性能测试》
    LoadRunner性能测试实战训练【广州 11月 晚班】
    pylot 一款开源的web性能测试工具
    用p6spy进行JDBC性能监控
    LoadRunner发送SNMP协议包
    用JMeter来测试Tomcat的性能
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/12143471.html
Copyright © 2011-2022 走看看