【问题标题】:AWS Elasticsearch Bulk Insert Latency Increased drasticallyAWS Elasticsearch 批量插入延迟急剧增加
【发布时间】:2020-01-07 20:17:06
【问题描述】:

我在 t2.small 节点和 10gb EBS 卷上使用 AWS Elasticsearch。我每 5 分钟索引大约 5000 个文档*。对于每个文档,我手动传递唯一​​ ID。由于大部分文档都会更新,因此几乎所有文档都可能有版本 2 或 3

还值得一提的是,我每天都在运行delete_by_query 操作来删除超过一周的文档。

批量插入的延迟通常小于 1 秒。但是今天突然在短短几个小时内经过两周的测试后,延迟增加到 3 分钟以批量插入 5000 个文档

我正在使用 elasticsearch-py 和 awsauth。

我检查了 AWS 集群运行状况统计信息。自从批量插入延迟问题说明以来,旧垃圾收集时间似乎急剧增加。看来这些之间可能存在相关性。

如何处理这个问题?这是因为维护了多个版本的文档还是使用了查询删除?

【问题讨论】:

    标签: python amazon-web-services elasticsearch


    【解决方案1】:

    这并不特别令人惊讶,但很难仅仅因为变量太多而给您一个完整的答案。需要考虑的一些事项:

    1. 重新索引文档非常昂贵,因为它首先需要删除
    2. 随着索引变大,执行段合并的开销也会增加
    3. 随着索引变得越来越大,维护 doc 值和全局序号变得更加昂贵
    4. 您在可突增的 t2 实例上运行,因此可能会用完 CPU 或 IO 积分
    5. 如果您有大量已删除/过时的文档,您没有提到进行优化/强制合并可能会有所帮助

    【讨论】:

    • 我应该多久运行一次 forcemerge?它似乎阻止了插入操作。
    • forcemerge 不会阻止插入,并且决定何时非常依赖于负载。
    猜你喜欢
    • 2011-06-19
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2015-09-30
    • 2014-09-04
    • 1970-01-01
    相关资源
    最近更新 更多