oracle rac--lb三种模式的测试-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 2090600
  • 博文数量: 195
  • 博客积分: 4378
  • 博客等级: 上校
  • 技术积分: 4046
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-09 11:37
个人简介

白天和黑夜只交替没交换无法想像对方的世界

文章分类

全部博文(195)

文章存档

2014年(3)

2013年(20)

2012年(18)

2011年(107)

2010年(17)

2009年(5)

2008年(20)

2007年(5)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: oracle

2011-09-29 01:41:15

oracle rac--lb三种模式的测试
 
====================================
测试分三种模式:
 1. client-side lb模式
 2.server-side lb模式
 3.client-side和server-side混合模式

==================================== 
 1.单纯的 client-side lb模式:
 
 (1)配置客户端tnsnames.ora内容如下:
 
rac =
  (description =
    (address = (protocol = tcp)(host = rac1-vip)(port = 1521))
    (address = (protocol = tcp)(host = rac2-vip)(port = 1521))
    (load_balance = yes)
    (connect_data =
      (server = dedicated)
      (service_name = rac)
    )
  )
 (2)数据库的准备工作:
 
 去掉server-side load balance内容:
 
 sql> alter system set remote_listener='' scope=spfile sid='*';
  system altered. 
 
 重启database 和listener:
 
 [oracle@rac1 ~]$ srvctl stop database -d rac
 [oracle@rac1 ~]$ srvctl stop listener -n rac2
 [oracle@rac1 ~]$ srvctl stop listener -n rac1
 [oracle@rac1 ~]$ srvctl start listener -n rac1 
 [oracle@rac1 ~]$ srvctl start listener -n rac2
 [oracle@rac1 ~]$ srvctl start database -d rac
 
 重启后,清空两节点的listener日志:
 [oracle@rac1 ~]$ cd /u01/oracle/product/10.2.0/db_1/network/log/
 [oracle@rac1 log]$ cat /dev/null>listener_rac1.log 
 [oracle@rac2 ~]$ cd /u01/oracle/product/10.2.0/db_1/network/log/
 [oracle@rac2 log]$ cat /dev/null>listener_rac2.log
 
 (3)执行测试脚本,参数设置为1000,代表有1000客户端建立连接。
 
 [oracle@st01 lb]$ ./test.sh rac 1000 > rac.log
 
 (4)检查测试结果:
 
 [oracle@st01 lb]$ grep rac1 rac.log |wc -l
 521
 [oracle@st01 lb]$ grep rac2 rac.log |wc -l
 479
 
 (5)提取两节点的listener日志内容:
 
 
 rac1节点上的实例1:
 
 [oracle@rac1 log]$ grep establish listener_rac1.log |wc -l
 521
 此处的521,说明节点rac1一共接收了521个用户连接。 
 
 [oracle@rac1 log]$ grep instance_name=rac listener_rac1.log |wc -l          
 0
 
 其中,说明这521个连接中有0个是从节点rac2的实例2的listener路由过来的,计算client-side load balance为:521-0=521,
 客户端发出了521个到实例1的连接请求。
  
 
 rac2节点上的实例2:
 
 [oracle@rac2 log]$ grep establish listener_rac2.log |wc -l
 479
 说明一共接收了765个用户连接。 
 
 [oracle@rac2 log]$  grep instance_name=rac listener_rac2.log |wc -l
 0
  其中,有479个连接中有0个是从节点rac1的实例1的listener路由过来的,计算client-side load balance为:479-0=479,
 客户端发出了479个到实例2的连接请求。
  
  这里只是用了 client-side lb,也就是说客户端从tns地址列表中随机选择实例发送请求,这个随机算法的结果是521/470,
 可见这个随机算法还是比较平均的。
 
****************************************************************************

 2.测试单纯的server-side lb模式:
 
 (1)配置客户端tnsnames.ora内容如下,关闭client-side lb模式:
 
 rac =
   (description =
      (address = (protocol = tcp)(host = rac1-vip)(port = 1521))
      (address = (protocol = tcp)(host = rac2-vip)(port = 1521))
      (load_balance = off)
      (connect_data =
        (server = dedicated)
        (service_name = rac)
      )
    )
 
 (2)数据库服务端的准备工作:
 
 启动server-side load balance:
 sql> show parameter remote
 name                                 type        value
 ------------------------------------ ----------- ------------------------------
 remote_archive_enable                string      true
 remote_dependencies_mode             string      timestamp
 remote_listener                      string
 remote_login_passwordfile            string      exclusive
 remote_os_authent                    boolean     false
 remote_os_roles                      boolean     false

 sql> alter system set remote_listener='listeners_rac' scope=spfile sid='*';
 system altered. 
 
 重启database和listener:
 
 [oracle@rac1 ~]$ srvctl stop database -d rac
 [oracle@rac1 ~]$ srvctl stop listener -n rac2
 [oracle@rac1 ~]$ srvctl stop listener -n rac1
 [oracle@rac1 ~]$ srvctl start listener -n rac1 
 [oracle@rac1 ~]$ srvctl start listener -n rac2
 [oracle@rac1 ~]$ srvctl start database -d rac
 清空两节点上的listener日志 :
 [oracle@rac1 log]$ cat /dev/null > listener_rac1.log
 [oracle@rac2 log]$ cat /dev/null > listener_rac2.log
 
 (3)执行测试脚本 :
 
 [oracle@st01 lb]$ ./test.sh rac 1000 > rac_sl.log
 
 (4)检查测试结果:
 
 
 [oracle@st01 lb]$  grep rac1 rac_sl.log |wc -l
 235
 [oracle@st01 lb]$  grep rac2 rac_sl.log |wc -l
 765
 
 (5)提取两节点的listener日志内容:
 
 
 rac1节点上的实例1:
 
 [oracle@rac1 log]$ grep establish listener_rac1.log |wc -l
 1000
 此处的1000,说明节点rac1一共打接收了1000个用户连接。 
 
 [oracle@rac1 log]$ grep instance_name=rac listener_rac1.log |wc -l          
 0
 其中,有0个是从节点rac2的实例2的listener路由过来的,计算client-side load balance为:1000-0=1000,
 客户端发出了1000个到实例1的连接请求。
  
 
 rac2节点上的实例2:
 
 [oracle@rac2 log]$ grep establish listener_rac2.log |wc -l
 765
 说明一共接收了765个用户连接。 
 
 [oracle@rac2 log]$  grep instance_name=rac listener_rac2.log |wc -l
 765
  其中,有765个是从节点rac1的实例1的listener路由过来的,计算client-side load balance为:765-765=0,
 客户端发出了0个到实例2的连接请求。
 
 在这个实验中,客户端的tnsnames.ora配置中,使用load_balance = off,禁用了client-side load balance,所以,
 用户的1000个连接全部发给了实例1,因为地址列表中rac2-vip是放在第条的。其他结果说明以下几条:
  (1)listener路由到实例的连接请求数量:实例1=1000-765=235,实例2=0-0=0;
  (2)远程的listener路由到本实例连接请求数量:实例1=0,实例2=765; 
  (3)server-side load balance的分配=235/765,从数量上看,不如client-side lb那么均匀。
  
 **************************************************************************** 
  

 3.测试client-side和server-side混合模式:
 
  (1)配置客户端tnsnames.ora内容如下,关闭client-side lb模式:
 
 rac =
   (description =
      (address = (protocol = tcp)(host = rac1-vip)(port = 1521))
      (address = (protocol = tcp)(host = rac2-vip)(port = 1521))
      (load_balance = yes)
      (connect_data =
        (server = dedicated)
        (service_name = rac)
      )
    )
 
  (2)数据库服务端的准备工作:
 
 启动server-side load balance:
 sql> show parameter remote
 name                                 type        value
 ------------------------------------ ----------- ------------------------------
 remote_archive_enable                string      true
 remote_dependencies_mode             string      timestamp
 remote_listener                      string
 remote_login_passwordfile            string      exclusive
 remote_os_authent                    boolean     false
 remote_os_roles                      boolean     false

 sql> alter system set remote_listener='listeners_rac' scope=spfile sid='*';
 system altered. 
 
  重启database和listener:
 
 [oracle@rac1 ~]$ srvctl stop database -d rac
 [oracle@rac1 ~]$ srvctl stop listener -n rac2
 [oracle@rac1 ~]$ srvctl stop listener -n rac1
 [oracle@rac1 ~]$ srvctl start listener -n rac1 
 [oracle@rac1 ~]$ srvctl start listener -n rac2
 [oracle@rac1 ~]$ srvctl start database -d rac
 清空两节点上的listener日志 :
 [oracle@rac1 log]$ cat /dev/null > listener_rac1.log
 [oracle@rac2 log]$ cat /dev/null > listener_rac2.log
 
 (3)执行测试脚本:
 
 [oracle@st01 lb]$ ./test.sh rac 1000 > rac_mix.log
 
 (4)检查测试结果:
 [oracle@st01 lb]$ grep rac1 rac_mix.log |wc -l
 735
 [oracle@st01 lb]$ grep rac2 rac_mix.log |wc -l
 265
 
 (5)提取两节点的listener日志内容:
 
 
 rac1节点上的实例1:
 
 [oracle@rac1 log]$ grep establish listener_rac1.log |wc -l
 937
 此处的937,说明节点rac1一共打接收了937个用户连接。 
 
 [oracle@rac1 log]$ grep instance_name=rac listener_rac1.log |wc -l          
 448
 其中,在937个连接中有448个是从节点rac2的实例2的listener路由过来的,计算client-side load balance为:937-448=489,
 客户端发出了489个到实例1的连接请求。
  
 
 rac2节点上的实例2:
 
 [oracle@rac2 log]$ grep establish listener_rac2.log |wc -l
 713
 说明一共接收了765个用户连接。 
 
 [oracle@rac2 log]$  grep instance_name=rac listener_rac2.log |wc -l
 202
  
  
  其中,有202个是从节点rac1的实例1的listener路由过来的,计算client-side load balance为:713-202=511,
 客户端发出了511个到实例2的连接请求。
 
 这个实验混合了client-side和server-side两种load balance,结果说明如下:
 
  (1)client-side load balance=489/511;
  (2)listener路由到实例的连接请求数量:实例1=489-202=284,实例2=511-448=63;
  (3)远程的listener路由到本实例连接请求数量:实例1=448,实例2=202; 
  (4)server-side load balance的分配=448/202,从数量上看,同样不如client-side lb那么均匀。
  
******************************************************************************

 

 

阅读(5809) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

2015-05-20 16:34:03

求你的测试脚本,谢谢!

|
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图