我有一个500 MB的XML文件,该文件需要30秒的MLCP摄入(约80,000个文档),大约6分钟进行协调(将每个XML文档转换为JSON,然后加载到最终DB之前)。
协调作业遵循常规数据中心模式(收集器,内容,作家等)
我有50个这样的文件可以处理并寻找优化运行时间的方法。
1)有什么方法可以启动MLCP负载并在多个文件中并行协调(在同一作业中)?
2)在和谐作业中,我尝试使用-pbatchsize和-pthreadCount参数,但对于批处理大小和6个线程计数,它们没有超过500的影响。如何通过提高这两个值来提高性能?需要任何服务器级设置吗?还有其他参数可以帮助提高性能吗?
3)是否有其他替代方案可以提高和谐步骤的性能?
预先感谢!
关于1)
您可以将输入流量的MLCP指向目录,而不仅仅是一个文件,并且它应该在一个运行中处理子树中的所有文件。输入流完成后,您可以启动和谐,统一的收集器应拾取所有可用文件。
但是,如果您想并行化负载,则可能不应该一一加载全部加载。调整您的MLCP摄入,以添加一个额外的集合,指示一些导入号码,或者只是简单地说明了聚合文件的文件名。调整您的收集器以获取(可选的?)额外的论点,将其缩小到该导入号码或总文件名。然后,您可以运行一个聚合的导入,并在完成后启动和谐。在不等待完成的情况下,您可以为第二个汇总做同样的事情。剩下的dito一个一个。
关于2)
增加数字不能保证会提高速度。如果和谐相对较重,那么较小的批量尺寸和较小的螺纹计数可能会更好。查看内存和CPU负载。仅当它们低于90%时增加。一旦您撞到屋顶,增加就无济于事。在这种情况下,水平扩展(向群集添加额外的节点)将是唯一的解决方案。
还要考虑IO速度。MarkLogic只能按照存储允许的速度写入磁盘的速度。林中有更多的森林和更多的节点,以帮助那里森林帮助。
关于3)
考虑分析您的协调代码。该导入听起来很快。30秒内的80k文档非常不错,但是和谐速度要慢得多。也许那里有一些效率低下的步骤。
玩我上面提出的建议可能会给您带来改进的余地,但通常可以在代码本身中找到最大的收益。
hth!