My application uses weblogic pooled connections, It calls connection close but Weblogic datasource never physically closes the connection (it just gets returned back to the pool). This application sees high volumes of orders coming in so initially it looked like a great choice.
The problem is that when the application has been running for ay 2-3 months the connections never get refreshed from database and the the PGA memory keeps piling up (as the underlying sessions never close).
This means that if we have 30 connections in the pool every connection will have its own session and session related memory allocated which never gets free until someone resets the wls connection pool or bounces the server. (which we dont want to)
Is there a way by which we can make weblogic to safely close the pooled connection and get a fresh one when application needs it ?
We tried using the shrink-enabled but the application gets high order volume (at consistant speed) so the timeout never happens on them. (also setting the init connection to lower value impacts performance)
There seems to be a poor relation between the JDBC driver and the DBMS. It is poor
design that merely using a connection for a long time will make for memory trouble in
the DBMS. The question is "for what client-side behavior/objects does this growing
DBMS-side memory represent?". You can try turning off WebLogics statement cache,
in case it is statement-related memory that will be freed when statements are closed,
but if not, then you're working with a poor DBMS/driver implementation for serious