当前位置:首页 >深度 > 正文

记录一次connection reset 错误的解决全过程
2023-04-30 05:48:04    脚本之家
目录
前言追其原因排查过程背景总结

前言

关于java.net.SocketException: Connection reset,是由于程序的某些异常导致套接字主动关闭,异常原因就太多,比如数据源出现故障,网络故障等,所以这里没有标准的答案。

本地调试正常,部署多台,就其中一台失败,提示connection reset 描述也比较模糊,造成错误的原因比较多,我先给出我这里的解决方案,仅供尝试,有效可以回来点个赞,无效但有其它解决可以回来评论一下供他人参考


(资料图片)

我这里最终的解决方案是在启动jar时 添加 -Djava.security.egd=file:/dev/./urandom 如下

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

追其原因

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服务器均正常。

错误提示如下:

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 错误: 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.(PhysicalConnection.java:553) ~[ojdbc6-11.2.0.4.0-atlassian-hosted.jar!/:11.2.0.4.0]
at oracle.jdbc.driver.T4CConnection.(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]

看到上面错误 ,肯定优先考虑到是数据库连接的问题,于是做了以下尝试

1.查看连接字符串是否有效 (检查没问题,跳过)2.调整spring.datasource.driver 将目前的oracle.jdbc.OracleDriver 切换为过时的驱动oracle.jdbc.driver.OracleDriver3.从错误中可以看到是 oracle.jdbc.driver.OracleDriver这个驱动报错,那么尝试再将spring.datasource.druid.driver-class-name设置为 oracle.jdbc.OracleDriver4.可能是druid的原因造成,去除druid依赖再尝试,仍未解决

经过上述尝试后,问题依旧。百度众多,其中这篇文章得知以下方法可以解决,尝试之后,果真可以。

在启动jar时 添加 -Djava.security.egd=file:/dev/./urandom 如下

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

造成该错误的原因,比如数据源问题,启动中其它错误也用导致提示这个错误,解决方案并非适用所有人。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

关键词:

下一篇: 最后一页
上一篇: 临死前为什么会口吐白沫_为什么会口吐白沫 简讯

记录一次connection reset 错误的解决全过程

临死前为什么会口吐白沫_为什么会口吐白沫 简讯

古力娜扎的新造型,戳穿了多少人的“坏心思”?

《航拍中国》台湾篇俯瞰宝岛:阖家团圆的心思从未变

当前资讯!椰子里面的果肉怎么吃 椰子肉吃法分享

交强险保的是什么?交强险多少钱一年?

俄外交部:俄罗斯将波兰当局强行进入俄学校视为敌对行动

购房签约的注意事项有哪些 当前热闻

首创证券给予科士达买入评级-世界信息

册甲骨文意思_册甲骨文-观察

新资讯:乃在文言文中的用法和例句_乃在文言文中什么意思

英国政治分析师:美国枪支暴力越发离谱 人人自危

m号是多大尺码(m号是多大尺码男装)-世界看热讯

世茂股份:去年营收57亿元,保交付仍是今年重点工作之一_世界观天下

当前滚动:11中2得到7分!科尔:不幸的是 普尔今天没有真正发挥好

全球实时:游族网络去年研发投入5.55亿元 积极探索AI技术游戏内应用

因地制宜促数字化转型

造梦三通缉杨戬出现概率 造梦西游3通缉令杨戬怎么打

全国戏曲(北方片)会演开幕

南方基金管理股份有限公司关于旗下基金投资关联方承销证券的关联交易公告

焦点速读:金马游乐:文旅市场快速回暖 一季度营收利润均大幅增长

尘埃落定!上海男篮对李春江处罚出炉,并官宣新帅人选_热点在线

洛克王国可爱图片_洛克王国可爱趴趴 今日播报

每日时讯!旭辉永升服务(01995)发布2022年业绩 收入约62.765亿元 同比增长33.5%

4月28日基金净值:方正富邦中证保险A最新净值0.851,涨1.67%

指挥控制软件工程

雷克萨斯韩国推出高性能新RC喷出479马力 全球观热点

焦点报道:联想ThinkPad X390 Yoga 360°翻转屏便携本带你飞

广州一季度工业增长承压:投资增长38.4%,新能源汽车等延续较好增势 世界今头条

北京中关村“周末大舞台”为居民献上文化盛宴-世界百事通

2023上海车展:全新林肯航海家上市 32.88-37.88万元

湘潭市直机关职工素质大讲堂精彩纷呈

2023年5月11日朗坤环境新股申购,15.5万市值可打满

南充:顺庆区拟推出11宗精品地块共计842.62亩

天天新动态:ftp服务器配置实验总结(ftp服务器配置)

家居丨顾家家居2022年实现营收180.1亿元 同比降1.81%_环球今头条