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