一套库,应用是短连接,直连数据库无连接池,时常发生应用超时
经过监控与测试,发现该机器上的监听只能处理每秒32个左右的并发连接
理论上选择共享服务器/DRCP可以解决问题,但是没有压力测试情况下还是选择保守的做法:新增2个监听
这套库是个11gR2的RAC,应用做了节点划分。
所以目标是,应用只连接到其主节点,并在主节点上的3个监听器中随机选择一个使用
另一个节点只是作为一个备份节点,只有主节点发生异常时,才连接到其上
先测试了BACKUP的写法,大概如下
rac1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=aaacme1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=rac1.us.aaacme.com)
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)
(BACKUP=rac2) (RETRIES=20)(DELAY=15))
)
)
这种配置,只能在主节点连接失败后,failover到backup指定的tns串
如果主节点根本连不上,其直接报错,不会去连接backup指定的tns串
查阅文档,总算找到了解决办法,配置如下
ORCL_BILLA3 =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.33)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.33)(PORT=1522))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.33)(PORT=1523))
(LOAD_BALANCE = YES)
)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.34)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.34)(PORT=1522))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.34)(PORT=1523))
(LOAD_BALANCE = YES)
)
(LOAD_BALANCE = NO)
(CONNECT_DATA=
(SERVICE_NAME=billa3)
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(RETRIES=180)(DELAY=5))
)
)
ADDRESS_LIST 部分的LOAD_BALANCE=YES,指定连接随意在给出的3个监听端口中选择一个
外层的LOAD_BALANCE=NO,指定正常情况下,只考虑第一个ADDRESS_LIST中配置
通过监控各个监听器的listener.log日志,发现在各个监听器之间的连接请求数基本相同
修改后观察应用,发现每秒登陆数提升到50个,未发生应用超时的警告
经过监控与测试,发现该机器上的监听只能处理每秒32个左右的并发连接
理论上选择共享服务器/DRCP可以解决问题,但是没有压力测试情况下还是选择保守的做法:新增2个监听
这套库是个11gR2的RAC,应用做了节点划分。
所以目标是,应用只连接到其主节点,并在主节点上的3个监听器中随机选择一个使用
另一个节点只是作为一个备份节点,只有主节点发生异常时,才连接到其上
先测试了BACKUP的写法,大概如下
rac1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=aaacme1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=rac1.us.aaacme.com)
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)
(BACKUP=rac2) (RETRIES=20)(DELAY=15))
)
)
这种配置,只能在主节点连接失败后,failover到backup指定的tns串
如果主节点根本连不上,其直接报错,不会去连接backup指定的tns串
查阅文档,总算找到了解决办法,配置如下
ORCL_BILLA3 =
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.33)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.33)(PORT=1522))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.33)(PORT=1523))
(LOAD_BALANCE = YES)
)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.34)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.34)(PORT=1522))
(ADDRESS=(PROTOCOL=tcp)(HOST=83.16.16.34)(PORT=1523))
(LOAD_BALANCE = YES)
)
(LOAD_BALANCE = NO)
(CONNECT_DATA=
(SERVICE_NAME=billa3)
(FAILOVER_MODE=(TYPE=select)(METHOD=basic)(RETRIES=180)(DELAY=5))
)
)
ADDRESS_LIST 部分的LOAD_BALANCE=YES,指定连接随意在给出的3个监听端口中选择一个
外层的LOAD_BALANCE=NO,指定正常情况下,只考虑第一个ADDRESS_LIST中配置
通过监控各个监听器的listener.log日志,发现在各个监听器之间的连接请求数基本相同
修改后观察应用,发现每秒登陆数提升到50个,未发生应用超时的警告
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8242091/viewspace-766037/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8242091/viewspace-766037/