Time to create datasource connection
We are having intermittent performance problems with a relatively new web application. It seems to be related to the database, but our oracle logs show that the queries are being executed very quickly. I temporarily turned on database logging within the datasource and it looks like the delay is caused by determining if a connection is available or spinning up a new datasource connection. The log is below shows a time jump of seconds. This particular query uses a different datasource than the ones before it, so it does make sense that a new connection would need to be created. However, I've found that usually it only takes 300-400 ms to create a connection. Any suggestions?
Our environment:
Oracle 12c
Coldfusion 11 Enterprise Update 9
Redhat Enterprise Linux 7.2
Apache 2.4.6
Driver: macromedia.jdbc.oracle.OracleDriver 5.1
--Here's a small snippet of the log. Prior to this, it executes several queries quickly.
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> ResultSetMetaData[331].isCaseSensitive(int column)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> column = 1
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK (true)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> ResultSetMetaData[331].getColumnType(int column)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> column = 1
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK (12)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> ResultSetMetaData[331].getColumnTypeName(int column)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> column = 1
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK (varchar2)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> ResultSet[128].next()
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK (false)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> ResultSet[128].close()
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> PreparedStatement[119].setMaxRows(int max)
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> max = 0
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> PreparedStatement[119].close()
spy(ajp-bio-8014-exec-1026)(2016/06/24 13:39:33.365)>> OK
--All of a sudden, the clock jumps 4 seconds. The log that follows shows a new connection being created.
spy(Thread-38313)(2016/06/24 13:39:37.942)>> Connection[5].getMetaData()
spy(Thread-38313)(2016/06/24 13:39:37.943)>> OK (DatabaseMetaData[137])
spy(Thread-38313)(2016/06/24 13:39:37.943)>> DatabaseMetaData[137].getURL()
spy(Thread-38313)(2016/06/24 13:39:37.943)>> OK (jdbc:macromedia_direct:oracle://150.231.26.14:1521;JDBCBEHAVIOR=1;APPLICATIONNAME=;KEYPASSWORD=;ENCRYPTIONTYPES=(AES128,AES192,AES256,DES,3DES112,3DES168,RC4_40,RC4_56,RC4_128,RC4_256);SUPPORTLINKS=false;CATALOGOPTIONS=2;REFCURSORSUPPORT=true;INITIALCOLUMNBUFFERSIZE=-1;BULKLOADBATCHSIZE=1000;ENABLEBULKLOAD=false;CONNECTIONRETRYDELAY=1;CLIENTUSER=;SID=hdcctest;WORKAROUNDS=0;VALIDATESERVERCERTIFICATE=true;CONVERTNULL=1;DATAINTEGRITYLEVEL=Rejected;CONNECTIONRETRYCOUNT=5;ACTION=;TRUSTSTORE=;STRINGPARAMSMUSTMATCHCHARCOLUMNS=true;LOADLIBRARYPATH=;EDITIONNAME=;MAXPOOLEDSTATEMENTS=500;CLIENTID=java.lang.Thread;SENDFLOATPARAMETERSASSTRING=false;CRYPTOPROTOCOLVERSION=;SYSLOGINROLE=;SERVICENAME=;QUERYTIMEOUT=0;DATAINTEGRITYTYPES=(MD5,SHA1);PROGRAMID=;SECURERANDOMALGORITHM=;REGISTERSTATEMENTPOOLMONITORMBEAN=false;MODULE=java.lang.Thread;IMPORTSTATEMENTPOOL=;LOADBALANCING=false;KEYSTOREPASSWORD=;SERVERTYPE=;LOGINTIMEOUT=0;RANDOMGENERATOR=SECURERANDOM;FAILOVERGRANULARITY=nonAtomic;ACCOUNTINGINFO=;REPORTRECYCLEBIN=true;ENCRYPTIONMETHOD=NoEncryption;WIREPROTOCOLMODE=2;FAILOVERMODE=connect;ENABLESERVERRESULTCACHE=false;SDUSIZE=;SUPPORTBINARYXML=false;INITIALIZATIONSTRING=;BATCHPERFORMANCEWORKAROUND=false;SENDSTRINGPARAMETERSASUNICODE=false;JAVADOUBLETOSTRING=false;CODEPAGEOVERRIDE=;AUTHENTICATIONMETHOD=userIDPassword;CLIENTHOSTNAME=;TNSSERVERNAME=;COMMITBEHAVIOR=serverDefault;RESULTSETMETADATAOPTIONS=0;FAILOVERPRECONNECT=false;SPYATTRIBUTES=(log=(file)/opt/coldfusion11/cfusion/logs/dms_db1.log; linelimit=80;logTName=yes;timestamp=yes);INSENSITIVERESULTSETBUFFERSIZE=2048;TNSNAMESFILE=;ENABLECANCELTIMEOUT=false;EMBEDDED=true;ENCRYPTIONLEVEL=Rejected;HOSTNAMEINCERTIFICATE=;FETCHTSWTZASTIMESTAMP=false;ALTERNATESERVERS=;LOBPREFETCHSIZE=4000;BULKLOADOPTIONS=0;TRUSTSTOREPASSWORD=;KEYSTORE=)
spy(Thread-38313)(2016/06/24 13:39:37.943)>> DatabaseMetaData[137].getDriverName()
spy(Thread-38313)(2016/06/24 13:39:37.943)>> OK (Oracle)
spy(Thread-38313)(2016/06/24 13:39:37.943)>> DatabaseMetaData[137].getDriverVersion()
spy(Thread-38313)(2016/06/24 13:39:37.944)>> OK (5.1.4.000286 (F000250.U000108))
spy(Thread-38313)(2016/06/24 13:39:37.944)>> DatabaseMetaData[137].getDatabaseProductName()
spy(Thread-38313)(2016/06/24 13:39:37.944)>> OK (Oracle)
spy(Thread-38313)(2016/06/24 13:39:37.944)>> DatabaseMetaData[137].getDatabaseProductVersion()
spy(Thread-38313)(2016/06/24 13:39:37.944)>> OK (11.2.0.3.0)
