使用 CoRB 进行批量数据转换

Bulk data transformation using CoRB

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

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

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

但是,有许多因素和注意事项将决定最佳线程数可能是多少以及这样做是否有帮助。

例如,如果您已经用完可用的应用程序服务器线程(默认为每个主机 32 个),将 CPU 推到最大值,and/or 遇到死锁,然后添加更多线程可能无济于事,而且实际上会降低吞吐量。

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

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

您可能会发现 returns 在某些时候会减少。如果您有一项资源密集型工作,您可能会发现增加线程会导致需求增加(CPU 负载、锁定等待时间等),并且您会遇到一个平台并开始看到更长的执行时间,因为更多的线程被应用,甚至可能会看到降低的利率。到那时,如果您想要更高的吞吐量,您需要查看是否可以调整查询或缩放 up/out。

如果您配置了 COMMAND-FILE or JOB-SERVER-PORT,那么您可以动态调整线程数 up/down,因为作业是 运行ning 并监控速率 运行实验并找到最佳线程数。