程序异常:Connection reset by peer

一、前言

最近项目上线遇到一个bug,说一下背景,项目分为开发、测试、预生产和生产,要连接的oracle数据库地址也就不同了,jar包运行的环境也不同,开发和测试环境都是在本地进行的,所以连接的数据库也没问题。但是程序移植到预生产和生产环境的时候就出现问题了,就是在程序启动的时候连接oracle的时候,预生产环境会在第一次连接失败,然后等到有请求进来的时候,重新去创建连接就可以连接成功。生产环境权限比较高,所以不能直接将程序跑起来测试生产环境是否可以连接生产oracle数据库,只能是写一个简单的demo去测试连接,其他的什么都不能干。生产环境测试连接生产oracle数据库,一直报异常Connection reset by peer,一开始以为是权限问题,后来弄来了有权限的用户名和密码,demo依然报上面的异常。还有一点是生产环境是Linux系统,这和这个问题起因有关。

二、解决办法(先上解决办法)

修改程序运行系统中安装的jdk文件,找到你安装jdk的安装目录,自己安哪就找哪,然后修改 JAVA_HOME/jre/lib/security/java.security 文件,JAVA_HOME代表你的***JDK***安装目录,看好是***JDK***。
打开后(如果打不开,下载个notepad++)找到文件中的 dev/random 修改为 dev/urandom 这个文件挺长的,就不贴了。
修改完成后上传demo就能够正常访问数据库了。

三、其他情况

像数据库断断续续连不上,或者达成war包放到tomcat里面,执行 startup.sh老是卡住了等情况。这个问题貌似也可以修改oracle的配置,但是生产的数据库已经运行了好几年了,是没有权利去修改的。。。
四、 其他博客和java.security.SecureRandom源码分析链接
1)tomcat的https://www.cnblogs.com/greys/p/10722950.html
2)外文的 https://answers.splunk.com/answers/710452/db-connect-javasqlsqlrecoverableexception-io-error.html
3)阿里云栖的:https://yq.aliyun.com/articles/714374
4)源码分析:https://blog.51cto.com/leo01/1795447

发布了65 篇原创文章 · 获赞 48 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/chen15369337607/article/details/102603805