2016-10-27 5 views
0

Ich habe eine Java-Servlet-Anwendung auf Tomcat8 über Windows Server 2012 R2 ausgeführt. Oracle 11g R2 wird auf einem anderen Rechner mit demselben Subnetz betrieben, so dass zwischen Java-Anwendung und Oracle keine Firewall existiert.JDBC Thin Adapter konnte keine Verbindung zu Spitzenzeiten herstellen

Die Java-Anwendung ist multi-threaded und hat zu Spitzenzeiten eine schwere Last.

meine Frage ist; wenn alles in Ordnung ist und gut funktioniert unter Ausnahme tritt auf.

java.lang.reflect.InvocationTargetException 
at sun.reflect.GeneratedMethodAccessor189.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at com.mulberry.request.MulberryRequestProcessor.run(MulberryRequestProcessor.java:168) 
at com.mulberry.request.MulberryRequestProcessor.lambda$run$0(MulberryRequestProcessor.java:78) 
at com.mulberry.request.MulberryRequestProcessor$$Lambda$32/461612128.run(Unknown Source) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:743) 
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) 
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:277) 
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:181) 
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:699) 
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:633) 
at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:186) 
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:127) 
at com.mulberry.data.connection.ConnectionManager.getConnection(ConnectionManager.java:86) 
at com.mulberry.data.MulberryOrm.getConnection(MulberryOrm.java:103) 
at com.mulberry.data.MulberryOrm.insertMulti(MulberryOrm.java:201) 
at com.mulberry.data.MulberryOrm.upsertMulti(MulberryOrm.java:192) 
at com.aril.profile.service.impl.LprBulkdataService.saveLoadProfileData(LprBulkdataService.java:86) 
... 11 more 
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection 
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) 
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:506) 
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:595) 
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:230) 
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1452) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:496) 
... 25 more 
Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) 
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
at java.net.Socket.connect(Socket.java:589) 
at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:161) 
at oracle.net.nt.ConnOption.connect(ConnOption.java:159) 
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:428) 
... 30 more 

Wenn diese Ausnahme auf Orakel-Site aufgetreten ist; dedizierte Benutzerzahl: ~ 5200 (auch mehr als 1 tomcat instace mit gleichem Zweck läuft)

Oracle-Parameter Sitzungen gefasste ist 12000 oracle Maschine läuft auch Windows Server 2012 mit 64 CPU und 96 GB RAM

Ich verwende tomcat jdbc Verbindungspool und Anwendungen, die Verbindungen unter tomcat Pool erhalten.

Verbindungszeichenfolge ist

jdbc:oracle:thin:@[IPADDRESS]:1521/[SERVICENAME] 

Ethernet zwischen Servern sind 10Gbit so denken nicht über Netzwerkverzögerung.

Kann mir jemand helfen, mein Problem zu erkennen?

+1

Wenn es funktioniert, außer in Zeiten hoher Last, liegt das Problem wahrscheinlich auf der Seite des DB-Servers. "Connection Refused" ist sehr spezifisch und bedeutet, dass der Server den Verbindungsversuch aktiv zurückwies, möglicherweise weil er überlastet war oder keine Ressourcen mehr hatte. Sie müssen dies verfolgen, indem Sie die Serverprotokolle überprüfen und mit Ihrem Datenbankadministrator sprechen. –

Antwort

0

können Sie Zeitüberschreitung festlegen;

Properties props = new Properties(); 
props.setProperty("user", "dbuser"); 
props.setProperty("password", "dbpassword"); 
props.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CONNECT_TIMEOUT, "2000"); 

Connection con = DriverManager.getConnection("<JDBC connection string>", props); 
Verwandte Themen