1

有没有办法专门针对具有数百个森林的离线集群中的大型数据库(>100TB)改善 MarkLogic 重新索引时间?

在重新索引期间禁用本地磁盘故障转移(副本林)怎么样?这会减少重新索引时间吗?

4

1 回答 1

3

重新索引主要受 IO 限制。提高性能等同于提高 IO 吞吐量——所以答案是一样的。由于您确实希望您的副本林也被索引,因此您不应该禁用它们——这只是将 IO 推迟到它们,直到您重新启用它们。既然你说这是一个“离线”集群——我认为这意味着不涉及生产流量,因此你可以自由地重新配置可能暂时干扰请求处理的东西——这是了解调整 IO 性能的好机会.

IO 性能是一个复杂的主题——(抱歉没有简单的答案)。首先要考虑的是你的物理拓扑——你的“本地磁盘”是什么、在哪里以及如何连接的?前任。如果这是在云环境或数据中心,您的“本地磁盘”可能是 NAS 或网络驱动器,在这种情况下,您的网络 IO 可能是瓶颈。

另一个考虑因素是集群的大小,以及是否可以为此目的增加它——这取决于森林所在的位置以及它们是否易于连接到不同的服务器。

一般来说,我建议同时监控 MarkLogic“监控历史”和您的操作系统级别的性能工具。目标是在接近您的理论容量但不是更多的情况下实现一致的 IO 活动。如果你“太用力”,那么你会得到一个很大的 IO 后置逻辑(IO 队列长度)——这会导致大量的“颠簸”,最终导致系统可能开始超时并重试的如此长的延迟。

因此,您需要限制重新索引,以便它不会在任何一个物理磁盘上立即变得太难。有很多方法可以做到这一点,在 marklogic 中重新索引和合并参数,平衡物理磁盘到林位置,暂时使一些林脱机,然后将它们“旋转”到位等。这需要一些实验来找到正确的组合.

最后一点——“太长”是主观的。重新索引 100TB 是很多 IO。这将只需要很长时间。你的目标应该是看看如何避免让事情变得更糟,而不是尝试不可能的事情并让它花费更少的时间。您可以计算一个粗略的最短时间。假设索引需要对所有数据进行完整的读取和写入(这需要更多时间,但这是一个开始)。你的集群使用其他方式读写100TB数据需要多长时间?这是完整重新索引的最低标准。
优化您的操作系统的基本 IO 吞吐量,MarkLogic 索引应该自然而然地遵循。

于 2018-04-03T15:03:31.720 回答