【问题标题】:Drool with Wildfly is not responding under Load带 Wildfly 的流口水在负载下没有响应
【发布时间】:2019-09-14 14:03:12
【问题描述】:

我已经使用 Wildfly 15.0(jboss) 服务器版本设置了 Drool 规则引擎 7.15。通常它工作正常。但是当负载更多到规则引擎时,即同时出现更多请求。它会停止响应,直到再次部署该规则。 这可能是 Wildfly 容器的问题。任何人都可以在这方面提供帮助。

-内存

【问题讨论】:

  • 任何人都可以在这方面提供帮助
  • 如果您能提供复制器/单元测试,我们将不胜感激。您的初始帖子中的信息量不足,无法解决此问题。
  • 亲爱的安东吉尔特利,
  • 亲爱的 Anton Giertli,我正在使用“wildfly-17.0.0.Final”服务器并将“kie-server-7.17.0.0.war”连同我的应用程序代码一起部署为“kie-builder”。战争'也部署了。现在我也部署了 10 条规则。当我使用有效的 JSON 向服务器“localhost:8080/kie-server/services/rest/server/containers/…”发出少量请求时,一切正常。它返回应用了哪个规则的预期结果。但是当我快速连续点击相同的 URL aprox 20 次时,规则引擎停止响应,直到我重新启动服务器。它在答案部分给出了以下日志

标签: wildfly drools rule-engine


【解决方案1】:

亲爱的安东·吉尔特利,

我正在使用“wildfly-17.0.0.Final”服务器并部署了“kie-server-7.17.0.0.war”以及我的应用程序代码作为“kie-builder.war”也已部署。现在我也部署了 10 条规则。当我使用有效的 JSON 向服务器“http://localhost:8080/kie-server/services/rest/server/containers/instances/RRTRULE”发出少量请求时,一切正常。它返回应用了哪个规则的预期结果。

但是

  • 当我快速连续点击相同的 URL 大约 20

    规则引擎停止响应,直到我重新启动服务器或再次部署规则。是否有任何配置阻止此 API 调用超过 20 次。

它给出以下日志:-

12:09:33,446 INFO [org.apache.activemq.audit.base] (Thread-15 (ActiveMQ-remoting-threads-ActiveMQServerImpl::serverUUID=f5b54bf7-da0d-11e9-8113-c8d3ffe781b3-1841659077)) AMQ601267 :用户匿名正在目标资源 ActiveMQServerImpl::serverUUID=f5b54bf7-da0d-11e9-8113-c8d3ffe781b3 [带有参数:[3d9b4ea8-daa8-11e9-9773-c8d3ffe781b3, d172f474-d677-475b-90119-d86f116, ****, 102400, RemotingConnectionImpl [ID=3d99ef16-daa8-11e9-9773-c8d3ffe781b3, clientID=null, nodeID=f5b54bf7-da0d-11e9-8113-c8d3ffe781b3, transportConnection=InVMConnection [serverID=0, id=3d99ef16-daa8 -11e9-9773-c8d3ffe781b3]],假,假,假,真,空,org.apache.activemq.artemis.core.protocol.core.impl.CoreSessionCallback@6385727e,真,OperationContextImpl [646439018] [minimalStore=9223372036854775807, storeLineUp=0,stored=0,minimalReplicated=9223372036854775807,replicationLineUp=0,replicated=0,paged=0,minimalPage=9223372036854775807,pageLineUp=0,errorCode=-1,错误orMessage=null, executorsPending=0, executor=OrderedExecutor(tasks=[])], {}]] 12:09:59,267 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:00,936 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:01,925 INFO [stdout](默认任务 1) rule_MP_Refund 然后拿起 97 12:10:02,906 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:03,854 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:04,733 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:05,905 INFO [stdout](默认任务 1) rule_MP_Refund 然后拿起 97 12:10:06,905 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:08,025 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:09,007 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:10,221 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:11,231 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:12,155 INFO [stdout](默认任务 1) rule_MP_Refund 然后拿起 97 12:10:13,208 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:14,151 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:15,101 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:16,191 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:17,173 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:18,103 INFO [stdout](默认任务 1)rule_MP_Refund 然后拿起 97 12:10:18,142 WARN [org.drools.core.rule.constraint.MvelConstraint] (drools-worker-2) 异常抖动:$rm.getReturnScore() >= (0.0) || 0 == 0.0 这不是错误,也不会阻止正确执行,因为约束将在解释模式下进行评估 12:10:18,143 WARN [org.drools.core.rule.constraint.MvelConstraint] (drools-worker-1) 异常抖动:$rm.getReturnScore() = (0.0) || 0 == 0.0 这不是错误,也不会阻止正确执行,因为约束将在解释模式下进行评估 12:10:18,155 WARN [org.drools.core.rule.constraint.MvelConstraint] (drools-worker-1) 异常抖动:$rm.getPrice() = (0.0) || 0 == 0.0 这不是错误,也不会阻止正确执行,因为约束将在解释模式下进行评估 12:10:18,151 WARN [org.drools.core.rule.constraint.MvelConstraint] (drools-worker-2) 异常抖动:$rm.getPrice() >= (10000.0) || 0 == 10000.0 这不是错误,也不会阻止正确执行,因为约束将在解释模式下进行评估

【讨论】:

    【解决方案2】:

    !!此问题已解决(关注:Disable JIT in Drools 6.2 with Java 8

    1) 添加 jvm 属性(-Ddrools.jittingThreshold=-1) 以在规则执行期间停止 JIT 编译器。 2) 此外,我们看到“.contains()”正在创建问题,将其更改为“包含”也可以解决 .drt 文件中的问题。

    ((("@{pincode}").split(",")).contains($rm.getPincode()) || "".equals("@{pincode}")), 变成 :- ((("@{pincode}").split(",")) 包含 ($rm.getPincode()) || "".equals("@{pincode}")),

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      相关资源
      最近更新 更多