我正在使用CoRB在带有128 am内存服务器的MarkLogic 3节点集群上进行数据转换。
目前,我正在用16个线程运行我的CoRB作业(没有并行作业正在运行)。增加线程数可以提高性能吗?如果是,那么我可以分配给运行CoRB的最大线程数是多少?
发布于 2021-11-25 16:34:12
简短的回答是肯定的。您应该能够增加CoRB作业的线程数。
然而,有许多因素和考虑因素将决定什么是最优线程计数,以及这样做是否有帮助。
例如,如果您已经将可用的appserver线程最大化(默认为每台主机32个),正在将CPU推到最大,并且/或遇到死锁,那么添加更多的线程可能没有帮助,实际上可能会降低吞吐量。
如果您有一个为XDBC应用服务器配置了所有三个节点的3节点集群,那么您将希望将负载分散到所有三个节点,以便利用这些服务器上可用的appserver线程和资源来执行转换。因此,要么通过负载均衡器运行,要么运行配置CoRB选项以扩展负载到多个主机。
您可以增加appserver线程,然后进一步增加线程数,以允许更多并发查询执行。只要执行时间保持相当一致且不增加,那么您就应该获得更多的吞吐量。
你可能会发现,在某一时刻,回报正在减少。如果您有一个资源密集型作业,您可能会发现增加线程会导致需求增加(CPU负载、锁等待时间等)。当应用更多线程时,您会遇到一个平台,并开始看到更长的执行时间,甚至可能会看到速率降低。在这一点上,您需要查看是否可以调优查询,或者如果您需要更多的吞吐量,是否可以扩展/退出。
如果您已经配置了命令文件或作业-服务器-端口,那么您可以在作业运行时动态地调整线程计数,并在运行时监视速率,以实验并找到最佳的线程计数。
https://stackoverflow.com/questions/70110739
复制相似问题