溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

connection?reset錯(cuò)誤如何解決

發(fā)布時(shí)間:2023-05-05 14:41:03 來(lái)源:億速云 閱讀:488 作者:iii 欄目:開(kāi)發(fā)技術(shù)

今天小編給大家分享一下connection reset錯(cuò)誤如何解決的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

    前言

    關(guān)于java.net.SocketException: Connection reset,是由于程序的某些異常導(dǎo)致套接字主動(dòng)關(guān)閉,異常原因就太多,比如數(shù)據(jù)源出現(xiàn)故障,網(wǎng)絡(luò)故障等,所以這里沒(méi)有標(biāo)準(zhǔn)的答案。

    本地調(diào)試正常,部署多臺(tái),就其中一臺(tái)失敗,提示connection reset 描述也比較模糊,造成錯(cuò)誤的原因比較多,我先給出我這里的解決方案,僅供嘗試,有效可以回來(lái)點(diǎn)個(gè)贊,無(wú)效但有其它解決可以回來(lái)評(píng)論一下供他人參考

    我這里最終的解決方案是在啟動(dòng)jar時(shí) 添加 -Djava.security.egd=file:/dev/./urandom 如下

     java -jar -Xms2g -Mmx2g -Djava.security.egd=file:/dev/./urandom   /data/kuizii.jar

    追其原因

    tomcat在生成sessionId時(shí)底里生成隨時(shí)數(shù)的算法選用了堵塞式 /dev/random算法,當(dāng)連接

    jvm隨機(jī)數(shù)算法選用不當(dāng)導(dǎo)致tomcat的SessionID生成非常慢的情況,使用了-Djava.security.egd=file:/dev/./urandom就可以避免。

    排查過(guò)程

    背景

    我的開(kāi)發(fā)環(huán)境為springboot 2.1.5 +oracle 11g+ druid ,數(shù)據(jù)庫(kù)驅(qū)動(dòng)是oracle.jdbc.OracleDriver.

    這一次遇到 一個(gè)很偶現(xiàn)的問(wèn)題,在部署jar包到某一臺(tái)linux時(shí)總會(huì)時(shí)不時(shí)提示以下錯(cuò)誤,然爾在其它開(kāi)發(fā)機(jī)以及其它linux服務(wù)器均正常。

    錯(cuò)誤提示如下:

    2020-07-27 18:09:41.673  INFO 18397 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8086 (http)
    2020-07-27 18:09:41.759  INFO 18397 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2020-07-27 18:09:41.759  INFO 18397 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.19]
    2020-07-27 18:09:42.026  INFO 18397 --- [           main] o.a.c.c.C.[.[localhost].[/scserver]      : Initializing Spring embedded WebApplicationContext
    2020-07-27 18:09:42.026  INFO 18397 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 9074 ms
    2020-07-27 18:09:43.811  INFO 18397 --- [           main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
    2020-07-27 18:11:16.805 ERROR 18397 --- [           main] com.alibaba.druid.pool.DruidDataSource   : init datasource error, url: jdbc:oracle:thin:@192.168.1.42:1521:orcl

    java.sql.SQLRecoverableException: IO 錯(cuò)誤: Connection reset
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:498) ~[ojdbc6-11.2.0.4.0-atlassian-hosted.jar!/:11.2.0.4.0]
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:553) ~[ojdbc6-11.2.0.4.0-atlassian-hosted.jar!/:11.2.0.4.0]
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:254) ~[ojdbc6-11.2.0.4.0-atlassian-hosted.jar!/:11.2.0.4.0]
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32) ~[ojdbc6-11.2.0.4.0-atlassian-hosted.jar!/:11.2.0.4.0]
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:528) ~[ojdbc6-11.2.0.4.0-atlassian-hosted.jar!/:11.2.0.4.0]
        at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.filter.FilterAdapter.connection_connect(FilterAdapter.java:787) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:218) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1646) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710) ~[druid-1.1.23.jar!/:1.1.23]
        at com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:912) ~[druid-1.1.23.jar!/:1.1.23]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_252]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_252]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_252]

    看到上面錯(cuò)誤 ,肯定優(yōu)先考慮到是數(shù)據(jù)庫(kù)連接的問(wèn)題,于是做了以下嘗試

    • 1.查看連接字符串是否有效 (檢查沒(méi)問(wèn)題,跳過(guò))

    • 2.調(diào)整spring.datasource.driver 將目前的oracle.jdbc.OracleDriver 切換為過(guò)時(shí)的驅(qū)動(dòng)oracle.jdbc.driver.OracleDriver

    • 3.從錯(cuò)誤中可以看到是 oracle.jdbc.driver.OracleDriver這個(gè)驅(qū)動(dòng)報(bào)錯(cuò),那么嘗試再將spring.datasource.druid.driver-class-name設(shè)置為 oracle.jdbc.OracleDriver

    • 4.可能是druid的原因造成,去除druid依賴再嘗試,仍未解決

    經(jīng)過(guò)上述嘗試后,問(wèn)題依舊。百度眾多,其中這篇文章得知以下方法可以解決,嘗試之后,果真可以。

    在啟動(dòng)jar時(shí) 添加 -Djava.security.egd=file:/dev/./urandom 如下

     java -jar -Xms2g -Mmx2g -Djava.security.egd=file:/dev/./urandom   /data/kuizii.jar

    造成該錯(cuò)誤的原因,比如數(shù)據(jù)源問(wèn)題,啟動(dòng)中其它錯(cuò)誤也用導(dǎo)致提示這個(gè)錯(cuò)誤,解決方案并非適用所有人。

    以上就是“connection reset錯(cuò)誤如何解決”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI