不活动后关闭数据库连接

Den*_*boy 10 database connection timeout database-connection mule

我有一个连接到Oracle数据库的Mule应用程序.该应用程序是一个SOAP api,它允许执行SQL存储过程.我的连接器设置为使用连接池,我一直在监视连接.我的最大池大小为20,当调用数据库时,我可以看到它们打开(netstat -ntl | grep PORTNUMBER).

 tcp4       0      0  IP HERE     OTHER IP HERE       SYN_SENT
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4       0      0  IP HERE     OTHER IP HERE       ESTABLISHED
 tcp4      10      0  IP HERE     OTHER IP HERE       ESTABLISHED
Run Code Online (Sandbox Code Playgroud)

调用完成后,我希望连接在一段时间后关闭.这不会发生.我注意到,当应用程序在服务器上运行时,连接仍然从7月开始(这是几个月前).

到目前为止,我发现实际上在几秒钟后关闭连接的唯一方法是启用XA事务并设置连接超时.但是,这完全弄乱了应用程序的性能,这是不必要的开销.

如何在不使用XA连接的情况下添加此类超时?我希望我的数据库连接在20秒不活动后关闭.

谢谢

编辑:使用通用数据库连接器 - Mule版本3.8.0我们拥有允许数据库的最大连接数,我们有多个此流程实例正在运行.这意味着连接由其中一个实例保留,导致其他实例无法获得新连接.

我们遇到的具体问题是,一个实例仍然保留了120个连接,即使它最后一次运行是几周之前.当第二个实例请求更多连接时,它只能得到30,因为数据库端的最大值是150.

Iva*_*van 0

如果 Mule 不成功,您可以尝试使用Oracle 透明连接缓存。

为了更好地理解案例,提出几个问题:

  1. 您使用的是哪种类型的连接器(jdbc/数据库)以及哪个版本的 Mule?
  2. 为什么你关心连接之后是否打开?您是否观察到其他一些令您不满意的症状?