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.
如果 Mule 不成功,您可以尝试使用Oracle 透明连接缓存。
为了更好地理解案例,提出几个问题: