记录一次connectionreset错误的解决全过程 |
||
+ 目录
前言关于java.net.SocketException: Connection reset,是由于程序的某些异常导致套接字主动关闭,异常原因就太多,比如数据源出现故障,网络故障等,所以这里没有标准的答案。 本地调试正常,部署多台,就其中一台失败,提示connection reset 描述也比较模糊,造成错误的原因比较多,我先给出我这里的解决方案,仅供尝试,有效可以回来点个赞,无效但有解决可以回来评论一下供他人参考 我这里最终的解决方案是在启动jar时 添加 -Djava.security.egd=file:/dev/./urandom 如下
?
追其原因tomcat在生成sessionId时底里生成随时数的算法选用了堵塞式 /dev/random算法,当连接 jvm随机数算法选用不当导致tomcat的SessionID生成非常慢的情况,使用了-Djava.security.egd=file:/dev/./urandom就可以避免。
排查过程
背景我的开发环境为springboot 2.1.5 +oracle 11g+ druid ,数据库驱动是oracle.jdbc.OracleDriver. 这一次遇到 一个很偶现的问题,在部署jar包到某一台linux时总会时不时提示以下错误,然尔在开发机以及linux服务器均正常。 错误提示如下:
看到上面错误 ,肯定优先考虑到是数据库连接的问题,于是做了以下尝试
经过上述尝试后,问题依旧。百度众多,其中这篇文章得知以下方法可以解决,尝试之后,果真可以。 在启动jar时 添加 -Djava.security.egd=file:/dev/./urandom 如下
|