Пул Oracle JDBC SocketException: сброс соединения при запуске - PullRequest
0 голосов
/ 30 мая 2018

Раньше у меня было несколько ошибок сброса соединения при запуске моего приложения.
Каковы возможные причины и как я могу это исправить?

    ...
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:115) ~[?:1.8.0_121]
    at java.net.SocketOutputStream.write(SocketOutputStream.java:155) ~[?:1.8.0_121]
    at oracle.net.ns.DataPacket.send(DataPacket.java:209) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ano.CryptoDataPacket.send(Unknown Source) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:215) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:302) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:249) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:171) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.net.ns.NetInputStream.read(NetInputStream.java:89) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:123) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:79) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CMAREngineStream.unmarshalUB1(T4CMAREngineStream.java:429) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:397) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:437) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:954) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:639) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:666) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:566) ~[ojdbc7-12.1.0.2.jar:12.1.0.2.0]
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:732) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:664) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:479) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-8.5.11.jar:?]
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) ~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77) ~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:326) ~[spring-jdbc-4.3.6.RELEASE.jar:4.3.6.RELEASE]
    ... 61 more

1 Ответ

0 голосов
/ 30 мая 2018

Добавление свойств системы JVM может помочь:

-Djava.security.egd=file:/dev/../dev/urandom

java.security.SecureRandom - это стандартный API, предоставляемый Sun.Среди различных методов, предлагаемых этим классом, void nextBytes (byte []) - один.Этот метод используется для генерации случайных байтов.Драйверы Oracle 11g JDBC используют этот API для генерации случайного числа во время входа в систему.Пользователи, использующие Linux, сталкиваются с SQLException («Io исключения: сброс соединения»).

Проблема заключается в двухкратном

  1. JVM пытается перечислить все файлы в/ tmp (или альтернативный каталог tmp, установленный -Djava.io.tmpdir) при вызове SecureRandom.nextBytes (byte []).Если количество файлов велико, метод требует много времени для ответа и, следовательно, приводит к превышению времени ожидания сервера

  2. Метод void nextBytes (byte []) использует / dev / random в Linuxи на некоторых машинах, у которых нет аппаратного обеспечения для генерации случайных чисел, работа замедляется до степени остановки всего процесса входа в систему.В конечном счете, пользователь сталкивается с SQLException («Исключение Io: сброс подключения»)

Пользователи, обновляющиеся до 11g, могут столкнуться с этой проблемой, если основной операционной системой является Linux, работающая на неисправном оборудовании.

Причина Причина этого еще точно не определена.Это может быть проблема в вашем оборудовании или тот факт, что по какой-то причине программное обеспечение не может читать из dev / random

( source )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...