DCD and TCP timeout

From: Hameed, Amir <Amir.Hameed_at_xerox.com>
Date: Tue, 12 Nov 2013 22:21:50 +0000
Message-ID: <AF02C941134B1A4AB5F61A726D08DCED0DEF544E_at_USA7109MB012.na.xerox.net>



Folks,
We are transitioning from Solaris to Linux and my question is around Linux because I am not seeing the same behavior on Solaris. I have a multi-tier Oracle ERP environment where the DB is running on a physical Linux server where as the middle tier is running on multiple VM servers. The OS is RHEL 6/U4. While doing destructive testing of the application, I noticed that when I shutdown one of the middle tier VM via "init 0" that had connections coming into the database, the established connections are not getting cleaned up in a timely manner even when "SQLNET.EXPIRE_TIME= 1" in the sqlnet.ora file on the DB server. It is taking somewhere from 15-18 minutes for connections to clean up. I ran a simple test as shown below:
  • I spawned 50 SQL*Plus connections in the background from a VM and started monitoring them via NETSTAT on the DB server via command "netstat -na|grep 1537|grep <VM_IP>|grep ESTABLISH| wc -l".
  • Had an SA shutdown the VM via "init 0" and noted down the time: Nov 12 14:35:28 usa0300lv1082 oddjobd: oddjobd shutdown succeeded
  • Roughly after 16-17 minutes, connection count started to come down as shown below:

Tue Nov 12 14:51:13 EST 2013 - 50

Tue Nov 12 14:51:19 EST 2013 - 8

Tue Nov 12 14:52:59 EST 2013 - 0

Any idea what might be causing the connections to remain open for this long? Do I need to set the TCP timeout setting to a certain value which I do not have to do on Solaris.

Thanks,
Amir

--
http://www.freelists.org/webpage/oracle-l
Received on Tue Nov 12 2013 - 23:21:50 CET

Original text of this message