第 90 章 与决策引擎相关的性能调优注意事项


下列关键概念或建议做法可帮助您优化决策引擎性能。这些概念在本章节中进行了概述,在适用的情况下,会详细介绍相关文档。本节将在 Red Hat Process Automation Manager 的新版本时扩展或更改。

对不需要重要决策引擎更新的无状态 KIE 会话使用顺序模式

顺序模式是决策引擎的高级规则基础配置,允许决策引擎以决策引擎日程表中列出的顺序来评估规则,而无需考虑工作内存的变化。因此,规则执行可能会以连续模式更快,但重要的更新可能不会应用到您的规则。顺序模式只适用于无状态 KIE 会话。

要启用顺序模式,请将系统属性 drools.sequential 设置为 true

有关启用顺序模式或其他选项的详情,请参考 第 84.3 节 “Phreak 中的顺序模式”

使用带有事件监听程序的简单操作

限制事件监听程序数及其执行的操作类型。将事件监听程序用于简单操作,如调试日志记录和设置属性。在监听器中,复杂的操作(如网络调用)可能会破坏规则执行。在使用 KIE 会话后,删除附加的事件监听程序以便清理会话,如下例所示:

使用后删除的事件监听程序示例

Listener listener = ...;
StatelessKnowledgeSession ksession = createSession();
try {
    ksession.insert(fact);
    ksession.fireAllRules();
    ...
} finally {
    if (session != null) {
        ksession.detachListener(listener);
        ksession.dispose();
    }
}
Copy to Clipboard Toggle word wrap

有关内置事件监听器以及在决策引擎中调试日志记录的详情,请参考 第 87 章 决策引擎事件监听程序和调试日志记录

为可执行模型构建配置 LambdaIntrospector 缓存大小
您可以配置 LambdaIntrospector.methodFingerprintsMap 缓存的大小,该缓存在可执行模型构建中使用。缓存的默认大小为 32。当您为缓存大小配置较小的值时,它会减少内存用量。例如,您可以将系统属性 drools.lambda.introspector.cache.size 配置为 0, 以达到最小内存使用量。请注意,较小的缓存大小也会降低构建性能。
对可执行模型使用 lambda externalization

启用 lambda 外部化,以优化运行时的内存消耗。它重写在可执行模型中生成和使用的 lambdas。这可让您多次使用相同的模式和相同的约束。当 rete 或 phreak 实例化时,可执行模型变成垃圾收集。

要为可执行模型启用 lambda 外部化,请包括以下属性:

-Ddrools.externaliseCanonicalModelLambda=true
Copy to Clipboard Toggle word wrap
配置 alpha 节点范围索引阈值

alpha 节点范围索引用于评估规则约束。您可以使用 drools.alphaNodeRangeIndexThreshold 系统属性配置 alpha 节点范围索引的阈值。阈值的默认值为 9,这表示当前面节点包含超过 9 个 alpha 节点时,启用 alpha 节点范围索引。例如,当您有 9 个类似于 Person (age > 10), Person (age > 20), …​, Person (age > 90) 的规则时,您可以有类似的 9 个 alpha 节点。

阈值的默认值取决于相关的优点和开销。但是,如果您为阈值配置了较小的值,可以根据您的规则提高性能。例如,您可以将 drools.alphaNodeRangeIndexThreshold 值配置为 6,当您之前节点有超过六个 alpha 节点时,启用 alpha 节点范围索引。您可以根据规则的性能测试结果为阈值设置适当的值。

启用加入节点范围索引

加入的节点范围索引功能仅在需要加入大量事实时才提高性能,例如: 25639)16 组合。当应用程序插入大量事实时,您可以启用加入节点范围索引并评估性能。默认情况下,加入节点范围索引被禁用。

kmodule.xml 文件示例

<kbase name="KBase1" betaRangeIndex="enabled">
Copy to Clipboard Toggle word wrap

System property for BetaRangeIndexOption

drools.betaNodeRangeIndexEnabled=true
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat