MarkLogic - 摄取和协调性能调整

问题描述 投票:1回答:1

我有一个500 MB聚合XML文件,mlcp摄取需要30秒(大约80,000个文档),大约6分钟用于协调(在加载到FINAL DB之前将每个XML文档转换为JSON)。

协调工作遵循常规数据中心模式(收集器,内容,编写器等)

我有50个这样的文件要处理,并寻找优化运行时间的方法。

1)有没有办法可以启动mlcp加载并协调多个文件(在同一个工作中)?

2)在协调作业中,我尝试使用-PbatchSize和-PthreadCount参数,但它们对批量大小和6个线程计数没有超过500的影响。如何通过增加这两个值来提高性能?需要任何服务器级别设置?还有其他参数可以帮助提高性能吗?

3)提高协调步骤性能的其他任何替代方案?

提前致谢!

marklogic marklogic-9 mlcp marklogic-dhf
1个回答
0
投票

关于1)

您可以将MLCP指向目录而不是一个文件的输入流,它应该在一次运行中处理子树中的所有文件。输入流完成后,您可以开始协调,协调的收集器应该拾取所有可用的文件。

但是,如果要并行加载,则可能不应该在一次运行中加载所有内容。调整MLCP摄取以添加一个额外的集合,指示一些导入数字或仅仅是聚合文件的文件名。调整你的收集器以获取一个(可选的?)额外参数,该参数可以减少到该导入数或聚合文件名。然后,您运行一个聚合的导入,并在完成后启动它的协调。无需等待此操作完成,您将对第二个聚合执行相同的操作。 Dito为其余的一个接一个。

关于2)

增加数量并不能保证提高速度。如果协调相对较重,那么批量较小,线程数较少可能会更好。看看内存和CPU负载。只有在低于90%时才会增加。一旦你到达屋顶,进一步增加将无济于事。在这种情况下,水平扩展(向群集添加额外节点)将是唯一的解决方案。

还要考虑IO速度。 MarkLogic只能像存储允许的那样快速写入磁盘。更多的森林以及拥有森林的集群中的更多节点可以帮助实现这一目标

关于3)

考虑分析您的协调代码。导入听起来相当快。 30秒内80k文档非常不错,但协调速度要慢得多。也许那里有一些效率低下的步骤。

玩上面提到的建议可能会让你觉得是否有改进的余地,但通常可以在代码本身找到最大的收益。

HTH!

© www.soinside.com 2019 - 2024. All rights reserved.