mysql群集网络故障_WAS集群系列(2):数据库连接低级错误网络连接问题

本文主要是介绍mysql群集网络故障_WAS集群系列(2):数据库连接低级错误网络连接问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境 项目点 指标 WAS版本 7.0 应用服务器操作系统 Windows 2008 应用服务器系统位数 64bit 数据库服务器操作系统 CentOS 5.6 数据库版本 Oracle 11.0.2.1 今天搭建WAS集群后,发布应用程序包及启动均成功,但在测试数据库连接时提示,不成功,建议查看KVM日

环境

项目点

指标

WAS版本

7.0

应用服务器操作系统

Windows 2008

应用服务器系统位数

64bit

数据库服务器操作系统

CentOS 5.6

数据库版本

Oracle 11.0.2.1

今天搭建WAS集群后,发布应用程序包及启动均成功,但在测试数据库连接时提示,不成功,建议查看KVM日志。

于是到日志路径下查看相关日志(此处参考为D:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\server1\SystemOut.log),信息如下:

[14-9-3 16:34:08:609 CST] 0000001d DataSourceCon E DSRA8040I: 无法连接到 DataSource。遇到 "":java.sql.SQLException: The Network Adapter could not establish the connectionDSRA0010E: SQL 状态:61000,错误码:20。

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)

at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:531)

at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:221)

at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)

at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)

at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)

at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:139)

at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:88)

at oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:70)

at com.ibm.ws.rsadapter.DSConfigurationHelper$2.run(DSConfigurationHelper.java:1704)

at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:5263)

at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:5441)

at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:255)

at com.ibm.ws.rsadapter.DSConfigurationHelper$3.run(DSConfigurationHelper.java:1720)

at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)

at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:1732)

at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:1627)

at com.ibm.ws.rsadapter.DSConfigurationHelper.getConnectionFromDSOrPooledDS(DSConfigurationHelper.java:3370)

at com.ibm.ws.rsadapter.DSConfigurationHelper.getConnectionFromDSOrPooledDS(DSConfigurationHelper.java:3245)

at com.ibm.ws.rsadapter.DSConfigurationHelper.testConnectionForGUI(DSConfigurationHelper.java:4105)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:600)

at com.ibm.ws.management.DataSourceConfigHelperMBean.testConnectionToDataSource2(DataSourceConfigHelperMBean.java:556)

at com.ibm.ws.management.DataSourceConfigHelperMBean.testConnection(DataSourceConfigHelperMBean.java:484)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:600)

at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:600)

at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)

at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074)

at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)

at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:836)

at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)

at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1331)

at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)

at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:1224)

at com.ibm.ws.management.connector.AdminServiceDelegator.invoke(AdminServiceDelegator.java:181)

at com.ibm.ws.management.connector.ipc.CallRouter.route(CallRouter.java:242)

at com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink.doWork(IPCConnectorInboundLink.java:353)

at com.ibm.ws.management.connector.ipc.IPCConnectorInboundLink$IPCConnectorReadCallback.complete(IPCConnectorInboundLink.java:595)

at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)

at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)

at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)

at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)

at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)

at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)

at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)

at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)

Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection

at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:359)

at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)

at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:672)

at oracle.net.ns.NSProtocol.connect(NSProtocol.java:237)

at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)

at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)

... 55 more

Caused by: java.net.ConnectException: Connection refused: connect

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:370)

at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:232)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:219)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)

at java.net.Socket.connect(Socket.java:528)

at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:141)

at oracle.net.nt.ConnOption.connect(ConnOption.java:123)

at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:337)

... 60 more

[14-9-2 16:34:27:921 CST] 0000005f NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:35:27:921 CST] 00000060 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:36:27:921 CST] 00000061 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:37:27:937 CST] 00000062 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:38:27:937 CST] 00000063 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:39:27:937 CST] 00000064 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:40:27:921 CST] 00000065 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:41:27:953 CST] 00000066 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:42:27:921 CST] 00000067 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:43:27:937 CST] 00000068 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:44:27:937 CST] 00000069 NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:45:27:921 CST] 0000006a NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:46:27:937 CST] 0000006b NodeSyncTask A ADMS0003I: 配置同步成功完成。

[14-9-2 16:47:27:921 CST] 0000006c NodeSyncTask A ADMS0003I: 配置同步成功完成。

虽然这么冗长的日志信息,但问题锁定到第一行,“The Network Adapter could not establish the connectionDSRA0010E”,这个问题按理说是常规问题,但由于进行了一个下午的各种配置设置,脑袋有些晕了。看到这个问题后,整个思路都跑偏了。现在将其记录,引以为戒。

错误的思考:

1、看到“The Network Adapter”,肯定是网络问题,想到是不是WAS集群两台服务器网卡问题,进行对数据库服务器及集群服务器互相ping通测试,ping通状态正常;

2、查看WAS数据源配置信息,开始检查各节点服务,重启各节点服务及HTTP服务等等,有些碰运气的胡乱尝试了,这个结果就是我的思路被自己彻底弄乱了;

3、于是接下来,做了更可笑的事,查看WAS集群下配置信息,怀疑数据源连接问题,对数据源格式由原来的“jdbc:oracle:thin:@10.53.105.64:1521:hyl”改为“jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.53.105.64)(PORT =1521)))(CONNECT_DATA = (SERVICE_NAME =hyl)))”。这里想的是因为网络连接问题,怀疑可能是集群服务器无法完成连接,可能是解析出问题了,于是修改成完整格式。测试数据库连接,依旧不成功。这里问题就出现了,忽略了简单的问题,把问题越想越复杂化了。

更正后的思考:

其实由上面第一点开始,就有些跑偏了,ping通测试后,应该最先想到的就是去看下数据库监听起来没有。而我完全忽略了这点,原因很简单,因为这台数据库服务器之前连接着单节点的WAS,连接测试没有问题,也就笃定了监听没有问题。就这么小的地方,自己有没有亲自去验证,而引发问题的复杂化。当发现数据库监听没有起来时才意识到,问题出在了这里,原来是当停止单实例WAS时,数据库服务器被重启过,而且该服务器上的监听并没有设置自动启动。说来是如此的简单。于是我启动监听,将之前改动过的测试恢复回刚刚配置完成后的常规设置状态,WAS数据源测试连接,结果两节点测试连接通过。

小结:

1、处理问题时,正确的思路比胡乱的尝试重要,只有方向对了才会“药到病除”,否则可能会“火上浇油”,把自己思路都弄乱了。

2、在技术上,记住了“The Network Adapter couldnot establish…”出现时,切记ping测试后,检查监听状态,确认后再做进一步分析。

***********************************************声明************************************************

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

表述有错误之处,请您留言或邮件(hyldba@163.com)指明,不胜感激。

*****************************************************************************************************

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

这篇关于mysql群集网络故障_WAS集群系列(2):数据库连接低级错误网络连接问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/708994

相关文章

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat