SpringBoot項目連接oracle報 connection reset by peer解決辦法
Springboot開發好的項目在linux環境部署連接數據庫時報如下錯誤:
errorCode 17002,state 08006
java.sql.SQLRecoverableException: IO Error: Connection reset by peer,Authentication lapse 74909 ms.
1.雖然啟動報錯,但只是連接數據庫比較慢,功能一切正常。
2.查閱資料發現由於tomcat啟動時產生隨機數導致jvm阻塞,可能是多次啟動tomcat導致熵池被用空造成阻塞。
3.使用telnet命令查詢部署的機器和數據庫的端口也是通的。
在apache-tomcat官方文檔:如何讓tomcat啟動更快里面提到了一些啟動時的優化項,其中一項是關於隨機數生成時,采用“熵源”(entropy source)的策略。他提到tomcat7的session id的生成主要是通過java.security.SecureRandom生成隨機數來實現的,隨機數算法使用的是“SHA1PRANG”。
解決辦法:
啟動參數java -jar 后加上下面的部分即可,增加后可以加快隨機數產生過程。
-Djava.security.egd=file:/dev/./dev/urandom
參考:
java.security.SecureRandom源碼分析
springboot應用連接oracle數據庫報錯connection reset;errorcode 17002 state 08006