我正在一个应用程序中工作,在该应用程序中,需要处理针对数百万历史交易的欺诈检测的交易。我正在使用Drools v6.4,StatefulKnowledgeSession和一个知识库(即一组规则文件或drl文件)。
出现问题的是我有200万个静态事实需要插入KieSession(流口水工作记忆)。这使处理速度非常慢,即每分钟只有50-60个事务处理。
我甚至尝试制作多个KieSessions以使其成为多线程,这肯定会加快应用程序的速度,但会增加内存占用,因为我必须在每个KieSession中插入这200万个事实。
因此,2个KieSession速度增加,如100个事务/分钟但具有2个KieSession性能几乎相同,即110个事务/分钟。我相信这是因为内存消耗。
有什么方法可以在多个KieSession中分享这些静态事实?或者按需获取这些事实,以便我可以通过提高性能来节省内存占用量?