繁体   English   中英

Drools 工作台(业务中心)请求超时

[英]Drools workbench (business-central) requests timing out

我已经安装了业务中心以及使用 MySQL 作为存储 Keycloak 数据的数据库的 Keycloak 身份验证。 业务中心工作台和 Keycloak 服务器位于 Nginx 后面。 在工作台上工作时,一些请求超时会给出 504 错误代码。 整个业务中心 UI 冻结,此后用户无法执行任何操作。

在 504 中出错的网址如下:https://{host}:{port}/business-central/out.43601-24741.eraiBus?z=105&clientId=43601-24741

有关设置的其他详细信息如下:

爪哇:1.8.0_242

商务中心版:7.34.Final

密钥斗篷版本:9.0.0

mysql: 8

业务中心的 Java 选项:-Xms1024M -Xmx2048M -XX:MaxPermSize=2048M -XX:MaxHeapSize=2048M

注意:我的所有这些设置都在一个 4GB EC2 实例上。

对此问题的任何帮助将不胜感激。

编辑:我检查了 access_log.log,看起来服务器处理请求的时间超过 45 秒。 这是一个日志:

"POST /business-central/in.93979-28827.eraiBus?z=15&clientId=93979-28827&wait=1 HTTP/1.1" 200 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko ) Chrome/79.0.3945.130 Safari/537.36"i 45001 45.001

编辑 2:这是发送的示例请求数据:

[{"CommandType":"CDIEvent","BeanType":"org.kie.workbench.common.screens.library.api.ProjectCountUpdate","BeanReference":{"^EncodedType":"org.kie.workbench.common.screens.library.api.ProjectCountUpdate","^ObjectID":"1","count":1,"space":{"^EncodedType":"org.uberfire.spaces.Space","^ObjectID":"2","name":"Fraud_Team"}},"FromClient":"1","ToSubject":"cdi.event:Dispatcher"},{"ToSubject":"org.kie.workbench.common.screens.library.api.LibraryService:RPC","CommandType":"getAllUsers:","Qualifiers":{"^EncodedType":"java.util.ArrayList","^ObjectID":"1","^Value":[]},"MethodParms":{"^EncodedType":"java.util.Arrays$ArrayList","^ObjectID":"2","^Value":[]},"ReplyTo":"org.kie.workbench.common.screens.library.api.LibraryService:RPC.getAllUsers::94:RespondTo:RPC","ErrorTo":"org.kie.workbench.common.screens.library.api.LibraryService:RPC.getAllUsers::94:Errors:RPC"}]

URL命中是:business-central/in.59966-45867.eraiBus?z=56&clientId=59966-45867&wait=1

处理时间超过一分钟。

问题描述

我在 7.38.0 上遇到了同样的问题。 我认为,问题在于 ERRAI 似乎在客户端和服务器之间保持滚动 45 秒请求打开,以确保通信是开放的。 对我来说,Nginx 的默认套接字超时为 30 秒,这意味着它为这些请求返回 504 网关超时,而实际上它们并没有“卡住”。 仅当您在 Business Central 30 秒内未执行任何操作时才会发生这种情况,否则请求将关闭并由新的请求接管。 我觉得 ERRAI 应该真的能够从这种情况中恢复过来,但无论如何。

解决方案

对我来说,我将 Nginx 服务器的套接字超时更新为 60 秒,这样 45 秒的请求就不会被 Nginx 超时。 我相信这相当于 Nginx 中的proxy_read_timeout配置。

如果您无法触摸 Nginx 配置,似乎还有一种方法可以关闭服务器与客户端的通信,如下所述: https ://docs.jboss.org/errai/4.0.0.Beta3/errai /reference/html_single/#sid-59146643_BusLifecycle-TurningServerCommunicationOnandOff 我没有测试这个,因为我不需要,但这可能是一个选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM