【发布时间】:2014-03-12 14:42:06
【问题描述】:
我正在开发一个大型规则引擎项目。部署规则和 xom 规则执行后,服务器没有响应或响应时间变长,有时会死机。
我在 WebSphere 服务器上这样设置堆大小:-XX:MaxPermSize:1024m -Xms2048m -Xmx2048m
还有其他方法可以配置它以使其性能更好吗?因为有时我必须重新启动相关计算机才能安全工作。
【问题讨论】:
标签: websphere rule-engine
我正在开发一个大型规则引擎项目。部署规则和 xom 规则执行后,服务器没有响应或响应时间变长,有时会死机。
我在 WebSphere 服务器上这样设置堆大小:-XX:MaxPermSize:1024m -Xms2048m -Xmx2048m
还有其他方法可以配置它以使其性能更好吗?因为有时我必须重新启动相关计算机才能安全工作。
【问题讨论】:
标签: websphere rule-engine
您使用的是 Rete 执行模式吗? 99% 的时间您将使用 Sequential,或者可能是 Fastpath,具体取决于多种因素。除非您使用正向规则链接,否则很少有人需要 Rete。
不幸的是,默认情况下,当您在 Rule Designer 中将规则任务添加到规则流时,它会将执行模式设置为 Rete。
因此,要检查您需要使用哪种执行模式,请参阅 here 以获取要在您的决策服务中执行的清单。
【讨论】:
查看 BPM DeveloperWorks 文章 Improve performance for IBM Operational Decision Manager, Part 1: Reduce rule execution time,了解有关 ODM 性能改进的建议,以及 Improve performance of rule execution and Rule Execution Server (RES) for ODM and JRules
此外,从 ODM 8.7 开始的默认执行模式是 FastPath,它应该为大多数用例提供最佳性能。您可以在 Rule Designer 中设置默认执行模式,方法是单击 Window > Preferences > Rule Designer > Ruleflow。
【讨论】:
在我当前的项目中,我同时使用了 RetePlus 和 Sequential 算法。以下是我的印象:
RetePlus = 仅适用于决策表,一旦它优化了评估规则的关键路径。Sequential = 非常适合简单的计算和原子规则(操作规则)。 您可以在一个编排中结合这两种方法。我在我们的项目中以 纳秒 的性能做到了这一点,相信我。
总的来说,这完全取决于您的业务模块和编排特征。也许您应该审查并改进您的规则(您是在业务规则中访问外部实体还是存储库 - 这会降低您的吞吐量)。
RAM 内存也很重要,但还不够。提高您的业务规则的质量,特别是在您的语言表达中。也许它们太复杂或多次计算太多。
希望这会有所帮助。
【讨论】: