JDBC连接Oracle异常-Connection Reset By Peer

场景描述

在生产环境通过JDBC连接oracle数据库,80%的几率会出现以下异常:

JDBC SSL Connection Fails With SEVERE: IO Error: Connection Reset By Peer, Connect Lapse 1 Ms., Authentication Lapse 0 Ms. (Doc ID 2747530.1)

The Network Adapter could not establish the connection

是有时候没问题,有时候有问题。

服务器配置:

ARM 架构服务器,麒麟操作系统。

解决

根据 Connection Reset By Peer, Connect Lapse 1 Ms., Authentication Lapse 0 Ms搜索的各种解决方法,都没有办法解决。

以下是无效参考:

https://www.technewstoday.com/connection-reset-by-peer/

https://support.oracle.com/knowledge/Middleware/2747530_1.html#FIX

https://docs.oracle.com/cd/E13209_01/wlcp/wlss30/configwlss/jvmrand.html

排除法

对linux不深入,oracle不深入实在是没有办法了,在测试环境(x86),经过多次测试,没有出现任何问题。排除是代码的问题。

初步可能:

1、服务架构问题,X86与ARM差异

2、Oracle服务器问题

3、OJDBC版本问题

4、网络偶尔连接得上,偶尔连接不上。可能是网络的连接问题。

排查:

2、其他客户端连接oracle,没有出现异常,排除oracle服务器问题。

3、相同配置,连接都没有问题,排除。

4、网络问题

搜素The Network Adapter could not establish the connection ,找到https://blog.csdn.net/jycjyc/article/details/118196814 ,分析挺有可能。修改配置,没有再出现问题。

参考:https://www.cnblogs.com/leafarmyarmy/p/12262907.html

解决方法

在 IPv4/IPv6 双环境中,对于使用 Java 开发的网络应用,比较值得注意的是以下两个 IPv6 相关的 Java 虚拟机系统属性。

java.net.preferIPv4Stack=<true|false> 
java.net.preferIPv6Addresses=<true|false>

preferIPv4Stack(默 认 false)表示如果存在 IPv4 和 IPv6 双栈,Java 程序是否优先使用 IPv4 套接字。默认值是优先使用 IPv6 套接字,因为 IPv6 套接字可以与对应的 IPv4 或 IPv6 主机进行对话;相反如果优先使用 IPv4,则只不能与 IPv6 主机进行通信。

preferIPv6Addresses(默认 false)表示在查询本地或远端 IP 地址时,如果存在 IPv4 和 IPv6 双地址,Java 程序是否优先返回 IPv6 地址。Java 默认返回 IPv4 地址主要是为了向后兼容,以支持旧有的 IPv4 验证逻辑,以及旧有的仅支持 IPv4 地址的服务。

JVM增加参数: -Djava.net.preferIPv4Stack=true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值