Реализация Drool исчерпала память, используя сеансы с состоянием - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь воскресить проект, который я не написал, который реализует движок Drool. Документации почти нет, и я лично никогда не использовал Drools ни в одном из моих предыдущих проектов. Я все еще продолжаю исследовать Kie / Drools, чтобы обдумать это, но в то же время я надеюсь, что кто-то сможет найти мне решение.

Этот проект содержит где-то 200–300 правил. которые реализуют различные условные конструкции. Я не верю, что проблема заключается в правилах (хотя я могу ошибаться, поскольку существует множество правил, использующих регулярные выражения), а скорее в реализации StatefulKnowledgeSession.

Я думаю, что стоит отметить, что:

  • Механизм механизма drool функционирует в течение нескольких минут, прежде чем он больше не способен давать какие-либо результаты
  • Он начинаетзначительно замедлиться, прежде чем он не сможет дать никаких результатов
  • Поток, с которым взаимодействует это приложение, считается "большими данными"
  • Существует другой поток, опрашивающий каждые 1000 секунд для результатов (я бы предпочелнастроить слушателя, а не опрашивать результаты)
  • Приложение создает несколько сеансов KieSession, работающих в разных потоках

Я запустил профилировщик на JVM, и он быстро показал, где именно моя кучаЗаполняется:

Метод профилирования: expireRightTuple method Профилировщик объекта: RightTupleImpl objects

Я могу попытаться предоставить как можно больше кода, хотя, будучи новичком в этой структуре правил, я не уверен, с чего начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...