应用程序连接数据库报错 errorCode 17002, state 08006、IO Error: Connection reset
错误摘要:1、create connection SQLException, url: jdbc:oracle:thin:**/***@*****:1521/orcl, errorCode 17002, state 080062、java.sql.SQLRecoverableException: IO Error: Connection reset3、Caused by: java.net.Soc
错误摘要:
1、create connection SQLException, url: jdbc:oracle:thin:**/***@*****:1521/orcl, errorCode 17002, state 08006
2、java.sql.SQLRecoverableException: IO Error: Connection reset
3、Caused by: java.net.SocketException: Connection reset
环境:
服务器:华为arm架构
操作系统: centos7.6
中间件:tomcat-8.35、jdk-1.8.261
数据库:mysql5.7、oracle 11.2.0.1.0
错误日志
排查步骤一:排查数据库
sqldeveloper连接数据库正常
应用服务器到数据库服务器的网
络及端口 正常
数据库状态 正常
数据库会话上限 正常
数据库日志 正常
数据库监听日志文件 正常
系统资源 正常
以上证明数据库一切正常
排查步骤二-排查应用服务器
服务器防火墙,selinux、端口等都正常,
排查步骤三-linux熵池
后来在网上查了和我的情况一模一样的这个报错,好多人都说是linux熵池不够的问题(具体的熵池是啥感兴趣的可以自己去了解一下)然后满心欢喜的按照思路安装了rng-tools工具增加系统熵池,安装好后熵池确实增加了,但系统报错依旧。可见并没什么用。
最终解决方案
后来困惑3天之后突然想起服务器是华为的云主机,想到是不是网络方面有点问题(因为之前偶尔是能正常连接数据库,且各机器间相互通讯是没问题的,就没考虑到是网络问题),于是开始一步步排查问题,最后排查到dns时候,看见/etc/resolv.conf文件下配置了几个dns
拿出来ping了一下 好家伙 一个不通,初步证明应该是这几个不能使用的dns在捣乱,注释掉之后重启部署的应用服务,果然正常了
后续:数据库服务器上的监听如果是监听的主机名,最好在应用服务器的hosts文件将ip和主机名映射关系写上,否则也有可能连接不上数据库
更多推荐
所有评论(0)