Re: How does Oracle database close client connections

  • From: Stefan Koehler <contact@xxxxxxxx>
  • To: Amir.Hameed@xxxxxxxxx, ORACLE-L <oracle-l@xxxxxxxxxxxxx>
  • Date: Fri, 16 Nov 2018 11:19:34 +0100 (CET)

Hello Amir,
seriously you have a more serious issue than the IDLE connections not being 
ended/closed. 

How many cores do you have? I assume that it is less than 400 cores and so you 
are heavily oversubscribing your CPUs. Define a static connection pool 
according to your amount of available cores and that's it - anyway no need to 
worry about the IDLE connections afterwards.

For more information please check out the RWP Learning Library (Videos #13 & 
#14): 
https://apexapps.oracle.com/pls/apex/f?p=44785:141:0::NO::P141_PAGE_ID,P141_SECTION_ID:119,870

Best Regards
Stefan Koehler

Independent Oracle performance consultant and researcher
Website: http://www.soocs.de
Twitter: @OracleSK

"Hameed, Amir" <Amir.Hameed@xxxxxxxxx> hat am 16. November 2018 um 03:53 
geschrieben: 

Hi,
I was recently engaged to troubleshoot an issue in a pre-production 
environment which involves Oracle 11.2.0.4 database running on Solaris server 
and IIS running on a Windows VM. On the IIS side, the minimum and maximum 
connection pool settings are set to 100 and 4000 respectively. On the Oracle 
database side, the processes and sessions parameters are set to 4000 and 6000 
respectively. I have no visibility to IIS and I do not have any experience 
with IIS either. I am relying on my understanding of how connection pooling 
work in WebLogic Server to triage the problem. The application processes 
thousands of invoices in multiple batches and each batch can run up to 4000 
invoices concurrently. The non-production environment has similar setup (at 
least this is what I have been told). When the application team runs load in 
non-production, it completes successfully and we do not see more than 150 
connections coming from the VM (V$SESSION.MACHINE) and the INACTIVE session 
count goes down to
  100. However, the same load when run in the pre-production environment, it 
consumes up to 4000 connections and this is a repeatable process. I have been 
told that IIS is setup the same way in non-production and pre-production 
environments. The default value of releasing idle connections frequency in IIS 
is 30 seconds. However, after processing invoices, even though connections 
established from the IIS VM have INACTIVE status, connections are not getting 
released in the pre-production environment and I am trying to understand the 
mechanism around how Oracle database releases connections.

I believe (and I could be wrong) that Oracle does not automatically close 
INACTIVE connections on its own and this is not the same situation as DCD. Is 
it possible that even though IIS is trying to shrink the connection pool but 
Oracle database is not releasing connections? Both non-production and 
pre-production have same initialization parameters with the only difference 
being the SGA size.

Any insight will be appreciated.

Thanks,
Amir
--
//www.freelists.org/webpage/oracle-l


Other related posts: