Несколько входов, работающих параллельно в одном приложении, и запуск нового приложения для каждого входа
Как я вижу, при запуске приложения в режиме отладки есть 4 разных потока, в которых работает Drools. Когда я запускаю приложение с двумя потоками, параллельно запускающими два входа, остаются те же 4 потока (например, они не превращаются в 8). Мой вопрос заключается в том, есть ли польза от запуска входов в отдельном приложении (и с этим запускается отдельное приложение Drools), или все это покрыто, и мы в итоге получаем те же результаты, используя одно приложение и запуская входы параллельно?
1 ответ
Решение
Преимущества использования 1 JVM:
- объединение кучи
- JIT компиляция только один раз в коде Java
- JIT-компиляция только один раз в коде DRL, если вы повторно используете ваши kiebases
- Возможность реализации очередей и кругового решения. Смотрите проблему SolverManager и
runnablePartThreadLimit
цель в Partitioned Search (который также будет поддерживаться в SolverManager в какой-то момент).
Преимущества использования нескольких JVM:
- Сборщик мусора обычно работает эффективнее
- Возможность связать идентификаторы процессов ОС (особенно в Linux) с конкретными ядрами. Это позволяет выполнять циклическое решение через конфигурацию ОС.