使用CoRB进行批量数据转换



我在一个拥有128GB RAM服务器的MarkLogic 3节点集群上使用CoRB进行数据转换。

目前我正在用16个线程运行我的CoRB作业(没有并行作业在运行(。增加线程数以提高性能可以吗?如果是,那么我可以分配给运行CoRB的最大线程数是多少?

简短的回答是肯定的。您应该能够增加CoRB作业的线程数。

然而,有许多因素和考虑因素将决定最佳线程数可能是多少,以及这样做是否有帮助

例如,如果您已经耗尽了可用的appserver线程(默认为每个主机32个(,正在将CPU推到最大值,和/或遇到死锁,那么添加更多线程可能没有帮助,实际上可能会降低吞吐量。

如果您有一个3节点集群,并且为该XDBC应用服务器配置了所有三个节点,那么您可能希望将负载分散到这三个节点上,以利用这些服务器上的可用应用服务器线程和资源来执行转换。因此,要么运行负载均衡器,要么配置CoRB选项将负载分散到多个主机。

您可以增加appserver线程,然后进一步增加线程数,以允许更多的并发查询执行。只要执行时间保持相当一致并且不增加,那么您就应该获得更多的吞吐量。

你可能会发现,在某个时刻,回报是递减的。如果你有一个资源密集型的作业,你可能会发现线程的增加会导致需求的增加(CPU负载、锁等待时间等(,当应用更多线程时,你会达到平稳期,开始看到更长的执行时间,甚至可能会看到更低的执行率。在这一点上,如果您想要更多的吞吐量,您需要查看是否可以调整查询或扩大/缩小。

如果您配置了COMMAND-FILEJOB-SERVER-PORT,则可以在作业运行时动态上下调整线程数,并在作业运行过程中监控速率,以进行实验并找到最佳线程数。