首页 / 知识
在大量处理中使用Drools
2023-04-17 04:12:00

Using Drools in a heavy batch process我们使用Drools作为解决方案的一部分,在非常紧张的处理应用程序中充当一种过滤器,也许在500,000个工作内存对象上运行多达100条规则。 我使用了Drools,其状态记忆包含超过1M个事实。通过对规则和基础JVM进行一些调整,在最初启动几分钟后,性能可能会非常好。如果您需要更多详细信息,请告诉我。 种类取决于您的规则-如果有足够的内存,则500K个对象是合理的(必须在内存中填充一个RETE网络,因此内存使用量是500K个对象的倍数-即用于网络结构,索引等的对象空间) -有可能您正在分页到磁盘,这确实很慢。 当然,如果您有匹配相同类型事实组合的规则,则可能导致尝试组合的爆炸式增长,即使您只有1条规则,也确实会非常慢。 我只是在学习自己Drools,所以也许我想念一些东西,但是为什么将整批的五十万个对象一次添加到工作内存中呢?我能想到的唯一原因是,只有当批次中的两个或多个项目相关时,规则才会生效。 如果不是这种情况,那么也许您可以使用无状态会话并一次声明一个对象。我认为规则在这种情况下的运行速度将提高50万倍。 即使是这种情况,您的所有规则都需要访问所有500k对象吗?您能否通过一次应用一个项目规则来加快处理速度,然后在处理的第二阶段中使用不同的规则库和工作内存来应用批处理级别的规则?这不会改变数据量,但是RETE网络会更小,因为简单的规则将被删除。 另一种方法是尝试在第二阶段中识别对象的相关组并在组中声明这些对象,从而进一步减少工作内存中的数据量以及拆分RETE网络。 我还没有使用最新版本的Drools(我上次使用它是大约一年前),但是那时我们的高负载基准测试证明它完全慢。在基于我们的许多体系结构之后,这非常令人失望。 至少我记得关于Drools的一件好事是他们的开发团队可以在IRC上使用,并且非常有帮助,您可以尝试一下,毕竟他们是专家:irc.codehaus.org #drools 解析几千个对象后,我遇到了OutOfMemory错误的问题。设置其他默认优化程序可以解决此问题。
使用无状态会话并一次添加一个对象? Drools并非真正设计为可以在大量对象上运行。它针对在一些对象上运行复杂的规则进行了优化。 每个其他对象的工作内存初始化太慢,并且缓存策略被设计为每个工作内存对象都可以工作。 我们也在看Drools,但是对我们来说,对象的数量很少,所以这不是问题。我确实记得读过一篇文章,该算法有多个替代版本,它们更多地考虑了内存使用情况,并且针对速度进行了优化,同时仍基于同一算法。不知道它们是否已经变成了真正的可用库。 此优化器也可以通过使用参数来设置 |
最新内容
相关内容
linux定时批处理命令?
linux定时批处理命令?,系统,时间,工作,代码,脚本,异常,工具,标准,周期,单位,linux下编写定时任务crontablinux怎么添加定时任务?下面就让我们来linux命令解决方案?
linux命令解决方案?,系统,管理,数据,电子,工作,电脑,软件,情况,不了,档案,linux处理/tmp文件空间不足1、删除缓存文件 缓存文件是临时存储在磁linux无效对象的命令?
linux无效对象的命令?,软件,系统,单位,网络,管理,术语,检测,电脑,环境,风险,linux疑问:普通用户的ifconfig命令无法执行,如何解决?建议这个操linux命令批处理文件?
linux命令批处理文件?,系统,代码,网站,网络,软件,环境,电脑,设备,平台,脚本,请问在Linux下可以运行bat文件么?bat是批处理文件,在windows和linulinux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据linux批处理cd命令?
linux批处理cd命令?,系统,管理,命令,电脑,首次,名称,通信,时间,位置,脚本,linux的shell脚本中有没有和bat中pause功能相似的命令Linux下的shelpythonPandas Series对象有哪些属
pythonPandas Series对象有哪些属性?,工具,数据,数字,分析,培训,属性,数据类型,数组,对象,索引,想必大家都知道pandas,它是基于Numpy的一种工具python是面向对象还是面向过程的
python是面向对象还是面向过程的,数据,代码,基础,形态,培训,术语,设计,对象,过程,语言,Python虽然是解释型语言,但从设计之初就已经是一门面向实现Python对象的持久化存储
实现Python对象的持久化存储,数据,对象,系统,函数,培训,标准,环境,管理,参数,文件,Python中有个序列化过程叫作pickle,它能够实现任意对象与文python之访问对象的元数据
python之访问对象的元数据,数据,异常,培训,属性,模块,对象,类型,定义,文档,实例,当你对一个你构造的对象使用dir()时,可能会发现列表中的很多python之执行对象
python之执行对象,代码,数据,信息,概念,培训,通用,对象,属性,方法,赋值,有时候我们会碰到这样的需求,需要执行对象的某个方法,或是需要对对象的Python之数据库游标对象详解
Python之数据库游标对象详解,软件,代码,一致,培训,数据库,游标,对象,方法,事务,操作,常用数据库:MySQL、Oracle、SQLite但是包嵌入到Python中