我们使用带有RDS / MySql的camunda作为DB。它工作正常,但有时它说DB已关闭,因此抛出ProcessEngine异常。 以下是我从配置和日志中理解的内容:
我们的池中随时有5个活动连接(在数据源配置中指定)
有一个场景是关闭的。
我们看到了如下错误:
请求收到上下文路径:/ engine-rest请求收到路径
信息:/ user PathInfo:/ user ExceptionHandler:
org.camunda.bpm.engine.ProcessEngineException:流程引擎
的持久性异常
org.camunda.bpm.engine.impl.interceptor.CommandInvocationContext.rethrow(CommandInvocationContext.java:148)
at org.camunda.bpm.engine.impl.interceptor.CommandContext.close(CommandContext.java:173) at org.camunda.bpm.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:113) at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:66) at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:30)
......引起:org.apache.ibatis.exceptions.PersistenceException:
查询数据库时出错。原因:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
连接关闭后不允许任何操作。
中可能存在错误org / camunda / bpm / engine / impl / mapping / entity / User.xml错误可能 涉及
org.camunda.bpm.engine.impl.persistence.entity.UserEntity.selectUserByQueryCriteria
执行查询SQL时发生错误:选择distinct RES。*
来自ACT_ID_USER RES
按RES.ID_ asc LIMIT排序? OFFSET?原因:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
连接关闭后不允许任何操作。
我们的tomcat道具指定:minIdle = 5
;
我最好的猜测:它在服务器上关闭,但由于上述属性,我们在本地维护。
每个tomcat doc(https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html):
testOnBorrow = true; validationQuery =“select 1”;
两个道具应该修复它,因为它验证了连接。
问题我想弄明白:
如何重现此问题?除了保持连接空闲几个小时之外,发生这种情况的情况。
AWS RDS服务器是否关闭连接?如果是这样,我们能控制它吗?
答案 0 :(得分:0)
正如@Zelldon所提到的,可以减少连接超时,然后我们就可以尝试了。它按预期工作。
为了确定,我运行了两个camunda实例,一个使用此修复,另一个没有。可以看到修复工作正常。
关于RDS,它确实关闭了连接,但我找不到任何文档。