gpt4 book ai didi

elasticsearch - 如何使用 eager global ordinals 加速刷新

转载 作者:行者123 更新时间:2023-11-29 02:55:47 24 4
gpt4 key购买 nike

我有一个 8 节点集群(AWS 上的 8 个 r3.xlarge 使用实例附带的临时 80GB SSD 磁盘)。有一个主索引和两个主索引类型。它们之间存在父/子关系。有 7500 万 parent 和 1500 万 child 。 (我们定期清理 child ,但保留 parent )

为了加速 has_child 查询,我在 child 的父字段上使用了急切的全局序数。

使用急切的全局序号似乎会显着减慢刷新时间。刷新现在最多需要 3 秒。

我相信我可以通过增加机器上的 IO 来加快刷新速度。但是我可以使用任何其他设置来加快刷新速度吗?

我正在使用 elasticsearch 1.4.2。

请注意,当我使用 8 m3.xlarge 和 1 个 EBS 卷时,刷新速度更快。 (这没有意义,因为 EBS 卷的 IO 应该比临时磁盘慢...)

谢谢!

最佳答案

如果没有任何指标来指出可能存在争用的地方,这就很棘手。你真的受 IO 限制吗?还是受计算限制?我经常发现我是后者。这可能是您通过比较两个四核实例类型得出的结论,但是当您使用 r3 时,其他事情也可能发生了变化。

一些可能有帮助的事情:

  • 移除合并限制,index.store.throttle.type: none。有了 SSD,您就不需要它了,我们只是为了安全起见,所以索引不会占用一个盒子。您可以为每个索引设置它,但如果测试表明它有助于但不会减慢搜索速度,只需将它放入每个节点的配置中,或者在您创建索引时放入应用程序中。

  • 如果您使用的是 Linux,请确保您的数据量的 IO 调度程序设置为 noop,或者至少设置为 deadline。 CFQ 应该在使用 SSD 时进行 DTRT,但我还没有发现这是真的。此外,在 EC2 上,您不需要带有虚拟化层的任何存储(理论上)的调度程序。请记住,除非您看到写入始终保持在 60mb/s 左右的上限,或者您受计算限制,否则这不会真正产生影响。

  • 由于您没有在 m3 上使用预先加载,所以它真的是苹果和橘子。只是预感,但放缓可能会产生一定程度的链式 react ,段正在堆积,并且只有在索引流量中断时才会恢复。您可以尝试将 index.refresh_interval 增加到 5s 并查看手动刷新是否加快。这很容易通过 /_cat/segments/INDEX | 进行监控。 wc -l.

  • 您可以尝试增加 ES 允许 Lucene 使用的线程数。在四核上你可能没有太多空间(需要那些 CPU 图),但你可以做一些测试并检查它。 index.merge.scheduler.max_thread_count: 6(在您的硬件上默认为 4)。

关于elasticsearch - 如何使用 eager global ordinals 加速刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28993691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com