分布式

基于Drools数据转发场景测试

2021-07-15  本文已影响0人  淡淡的小番茄

环境信息

操作系统:CentOS Linux release 7.4.1708 (Core)

机器配置:8c 16g

规则信息

写了个简单个规则DRL文件,此规则对应我们业务场景的数据转发流程,非常有代表性。就是对数据进行账户、产品key、是否属于某个标签的过滤,脚本如下:

package drools.example;

import org.drools.example.api.namedkiesession.Message;

function int hasProductLabels(String deviceLabels,String labels){

  return deviceLabels.indexOf(labels)==-1?0:1;

}

rule "g1_mytest"

when

$msg : Message(orgId =='11111' && productKey=='cu3im1kts3rz8dSc')

&& eval(hasProductLabels('101,102,103',$msg.getProductLabels())>0)

then

end

rule "g1_mytest1"

when

$msg : Message(orgId =='11111' && productKey=='cu3im1kts3rz8dSc')

&& eval(hasProductLabels('101,102,103',$msg.getProductLabels())>0)

then

end

...

场景一 数据转发,1000规则,匹配100万次。

java -Dcom.sun.management.jmxremote.port=20217 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=172.30.xxx.yyy -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=. -jar drools-test.jar getForwardRules 10 1000000

通过jvisualvm.exe来监控相关资源使用情况:

场景二 数据转发,2000规则,匹配100万次。

场景三 数据转发,5000规则,匹配10万次。

场景四数据转发,10000规则,匹配10万次。

1万规则512M内存已经不够用,需要配置为1G。

java -Dcom.sun.management.jmxremote.port=20217 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=172.30.127.85 -Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=. -jar drools-test.jar getForwardRules 100 100000

结论

上一篇下一篇

猜你喜欢

热点阅读