Массовое преобразование данных с использованием CoRB
Я выполняю преобразование данных с помощью CoRB в 3-узловом кластере MarkLogic с серверами ОЗУ 128 ГБ.
В настоящее время я выполняю задание CoRB с 16 потоками (параллельные задания не выполняются). Можно ли увеличить количество потоков для повышения производительности? Если да, то какое максимальное количество потоков я могу выделить для запуска CoRB?
1 ответ
Краткий ответ: да. Вы должны иметь возможность увеличить количество потоков вашего задания CoRB.
Однако существует ряд факторов и соображений, которые определяют, каким может быть оптимальное количество потоков и полезно ли это делать.
Например, если вы уже исчерпали количество доступных потоков сервера приложений (по умолчанию 32 на хост), загружаете ЦП до максимума и/или сталкиваетесь с взаимоблокировками, то добавление дополнительных потоков может не помочь и фактически может снизить пропускную способность.
Если у вас есть кластер из 3 узлов, все три из которых настроены для этого сервера приложений XDBC, вам следует распределить нагрузку по всем трем узлам, чтобы использовать доступные потоки и ресурсы сервера приложений на этих серверах для выполнения преобразования. Итак, либо запускайте балансировщик нагрузки, либо настройте параметры CoRB для распределения нагрузки на несколько хостов.
Вы можете увеличить количество потоков сервера приложений, а затем еще больше увеличить количество потоков, чтобы обеспечить большее количество одновременных запросов. Пока время выполнения остается достаточно постоянным и не увеличивается, вы должны получить большую пропускную способность.
Вы можете обнаружить, что в какой-то момент наблюдается убывающая отдача. Если у вас есть ресурсоемкая работа, вы можете обнаружить, что увеличение количества потоков приводит к увеличению требований (загрузка ЦП, время ожидания блокировки и т. д.) и что вы достигаете плато и начинаете наблюдать более длительное время выполнения, когда применяется больше потоков, и могут даже увидеть сниженные ставки. В этот момент вам нужно будет посмотреть, сможете ли вы настроить запрос или увеличить/уменьшить масштаб, если вам нужна большая пропускная способность.
Если вы настроили COMMAND-FILE или JOB-SERVER-PORT , то вы можете динамически регулировать количество потоков вверх/вниз по мере выполнения задания и отслеживать скорость его выполнения, чтобы поэкспериментировать и найти оптимальное количество потоков.