要进行压力测试,中间件使用WEBLOGIC 816,数据库版本为11.1.0.6 RAC,压力测试工具为LOADRUNNER 8.0。测试单实例与RAC环境各个节点的负载情况。
在WEBLOGIC上配置了一个多池,利用WEBLOGIC提供的负载均衡策略,将并发均衡的分别到两个节点上。
但是测试发现,一旦运行了一段时间,所有的压力都会加载到一个节点上,而另一个节点上机会没有任何的压力。
通过数据库中查询到的结果如下:
SQL> SELECT INST_ID, STATUS, COUNT(*)
2 FROM GV$SESSION
3 WHERE USERNAME = 'NDMAIN'
4 GROUP BY INST_ID, STATUS;
INST_ID STATUS COUNT(*)
---------- -------- ----------
1 INACTIVE 6
1 ACTIVE 1
2 ACTIVE 147
2 INACTIVE 3
WEBLOGIC的并发设置为150,而LOADRUNNER并发为200,Oracle每个实例的SESSION为600。
可以看到,基本上压力完全集中在实例2上。实例1上处于空闲状态,如果压力测试运行时间足够长,可能在短时间内实例1上的ACTIVE连接能达到二、三十左右,但是很快又全部释放。
SQL> SELECT INST_ID, STATUS, COUNT(*)
2 FROM GV$SESSION
3 WHERE USERNAME = 'NDMAIN'
4 GROUP BY INST_ID, STATUS;
INST_ID STATUS COUNT(*)
---------- -------- ----------
1 ACTIVE 20
1 INACTIVE 54
2 ACTIVE 121
2 INACTIVE 28
测试了多次,结果都很类似,压力几乎完全集中到一个节点上。不过不见得每次压力都是在节点2上,很有可能在WEBLOGIC服务重启之后,下次测试开始,所有的压力都集中到节点1上。这说明问题应该不是两个节点的硬件处理不平衡造成的。
这个测试的是长时间运行的查询,而对于快速相应的INSERT语句,可以看到两个节点上都有很少的ACTIVE的会话。这时因为事务处理很短暂,不可能在短时间内使得WEBLOGIC的并发跑满,因此这种情况没有问题。
SQL> SELECT INST_ID, STATUS, COUNT(*)
2 FROM GV$SESSION
3 WHERE USERNAME = 'NDMAIN'
4 GROUP BY INST_ID, STATUS;
INST_ID STATUS COUNT(*)
---------- -------- ----------
1 INACTIVE 50
1 ACTIVE 1
2 ACTIVE 1
2 INACTIVE 98
对于长时间查询的情况,WEBLOGIC的LOAD-BALANCING策略似乎存在问题,导致两个节点压力出现倾斜。开始认为可能是由于WEBLOGIC的版本太低导致了问题的产生,于是将WEBLOGIC升级到了最新的版本10.3,可是测试结果依旧。
由于前面测试使用的都是WEBLOGIC的LOAD-BALANCING策略进行的,尝试了一下HING-AVAILABILITY策略,发现这个策略倒是和它本身的名称更相符一些,但是也存在一定的问题。这个策略会优先MULIT POOL中的第一个连接池,如果第一个连接池可以连接,就不使用第二个连接池。即使并发用户太多,导致很多连接超时的错误,WEBLOGIC也不会去尝试使用第二个连接池。当后台关闭实例1,导致连接池1的连接失败,这时WEBLOGIC开始使用第二个连接池。一旦实例1启动,WEBLOGIC检测到连接池1可用,马上所有的连接都会从连接池2上转移到连接池1,恢复到实例1关闭之前的情况。基于上面的情况,感觉WEBLOGIC只是实现了连接池的优先级设置,而不是真正意义上的HIGH-AVAILABILITY。
扯远了,下面继续说WEBLOGIC的LOAD-BALANCING。由于升级到最新版本都无法解决这个问题,只好在网络上搜索,结果发现不少相似的案例。不过没有发现解决方案。
不过在metalink里面的一篇文章提到可以在WEBLOGIC里面的URL=”jdbc:oracle:thin@”后面直接使用Oracle的tnsnames.ora中的配置。
比如这里配置URL=”jdbc:oracle:thin@ (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=172.0.2.58) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP) (HOST=172.0.2.59) (PORT=1521)) (LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=rac11g.us.oracle.com))”
这种方式实际上绕过了WEBLOGIC的负载均衡机制,而直接使用了RAC的负载均衡策略,结果测试结果如下:
SQL> SELECT INST_ID, STATUS, COUNT(*)
2 FROM GV$SESSION
3 WHERE USERNAME = 'NDMAIN'
4 GROUP BY INST_ID, STATUS;
INST_ID STATUS COUNT(*)
---------- -------- ----------
1 ACTIVE 75
1 INACTIVE 6
2 ACTIVE 75
2 INACTIVE 5
Oracle的负载均衡的实现还是比较好的,基本上两个节点的负载差别很小。对于负载较小的情况也同样适用:
SQL> SELECT INST_ID, STATUS, COUNT(*)
2 FROM GV$SESSION
3 WHERE USERNAME = 'NDMAIN'
4 GROUP BY INST_ID, STATUS;
INST_ID STATUS COUNT(*)
---------- -------- ----------
1 INACTIVE 8
1 ACTIVE 1
2 ACTIVE 2
2 INACTIVE 7
测试结果发现,要想在任何情况下都获得比较理想的负载均衡,最好使用Oracle的负载均衡策略,而不要使用WEBLOGIC的多池提供的LOAD-BALANCING策略。
分享到:
相关推荐
在这样的环境下,配置WebLogic连接Oracle RAC数据源是一项关键任务,它确保了应用能够透明地访问RAC集群中的任何节点,实现高可用性和负载均衡。 首先,理解Oracle RAC的工作原理至关重要。RAC允许多个实例同时访问...
WebLogic集群配置和负载均衡的实现
Oracle RAC是一种高可用性解决方案,可使多台服务器共享同一数据库,提供故障切换和负载均衡能力。WebLogic Server集群则是一个分布式应用服务器环境,用于提高应用程序的性能和可靠性。 一、数据库安装 1.1 使用...
WebLogic Server的集群技术,包括网页群集和EJB组件群集,提供无硬件或操作系统依赖的透明复制、负载均衡和故障恢复能力,确保了电子商务解决方案所需的扩展性和可用性。 Oracle Real Application Clusters (RAC),...
WebLogic是Oracle公司的一款企业级Java应用服务器,而集群功能允许多个WebLogic服务器实例协同工作,提供高可用性、可扩展性和资源负载均衡。 集群的工作原理是将多个独立的WebLogic服务器实例组织成一个逻辑单元,...
Weblogic与Apache结合进行负载均衡和群集配置是一种常见的企业级解决方案,用于提高Web应用程序的可用性和性能。这种配置方式通常适用于大型系统,通过分散负载到多个服务器,防止单点故障,确保服务的高可用性。 1...
3. **Oracle RAC**:Oracle RAC是Oracle数据库的一个特性,它允许多个数据库实例同时访问同一个物理数据库,实现高可用性和负载均衡。当一个节点出现故障时,其他节点可以接管工作,避免单点故障,确保数据库服务的...
WebLogic 11g 集群 负载均衡 Session复制 Windows
### WebLogic连接Oracle数据库配置详解 #### 一、概述 在企业级应用开发中,WebLogic作为一款成熟且稳定的应用服务器,被广泛应用于各种大型系统的部署。为了实现WebLogic与Oracle数据库之间的高效通信,需要对...
apache和weblogic共同配置负载均衡的详细步骤
资源描述:该文档为weblogic10.3.6版本的集群安装与配置手册,图文并茂,非常详细。 适合人群:熟悉Linux系统的新手、有一定基础的人、老手
WebLogic 和 F5 相结合的负载均衡配置方案 本文档介绍了使用 WebLogic 和 F5 BIG-IP 控制器实现负载均衡配置方案,以提高应用程序的可扩展性、可靠性和高可用性。该方案通过将 WebLogic 服务器集群与 F5 BIG-IP ...
本文将详细讲解如何使用Nginx作为负载均衡器,实现对Tomcat和WebLogic集群的负载均衡以及故障处理。我们将遵循由浅入深的原则,适合初学者和进阶者学习。 首先,我们来看看基础环境。系统为Redhat7.5,JDK版本为1.8...
以上内容覆盖了 WebLogic 与 Oracle 数据库连接的基本原理、连接池配置参数详解以及使用 Java 进行连接测试的具体方法,并简要介绍了 JSF 1.2 在 MyEclipse 中的配置流程。希望这些信息能够帮助您更好地理解和操作 ...
WebLogic Server是一款由Oracle提供的企业级Java应用服务器,而Apache HTTP Server则是一个开源的Web服务器,常用于负载均衡和反向代理。 首先,我们要理解WebLogic的负载均衡可以通过硬件设备(如F5)或软件解决...
4. 集成与连接性:这部分资料可能讲解如何在WebLogic和Oracle之间建立连接,使用JDBC驱动程序进行通信,以及如何处理数据源和连接池配置。 5. 安全性与权限管理:这可能包含如何设置Linux系统的用户权限、WebLogic的...
Oracle RAC是Oracle数据库系统的一个重要特性,它提供了一种高可用性和可伸缩性的解决方案,使得多个数据库实例可以同时访问同一个物理数据库,从而实现数据共享和负载均衡。 本书首先从RAC的基本概念入手,详细...
财政系统WebLogic服务器负载均衡解决方案 根据预设的负载策略,将不同的访问请求分发到相应的服务器
CC_WebLogic9.2.2_集群安装自己总结: 在linux系统下: 一.创建weblogic用户 二.安装Apache 三.主管安装、调优 四.受管安装、调优 五.数据源、组、weblogic.xml配置、共享目录创建
* 测试创建的连接(Test Created Connections):指定 WebLogic Server 是否在创建连接后且将该连接添加到缓冲池中可用连接列表之前对该连接进行测试。 * 测试释放的连接(Test Released Connections):指定 ...