JDBC负载均衡的一些约束

最近某个项目现场使用了JDBC的负载均衡功能,但并未获得预期的负载均衡的效果。
发现业务sql几乎都是连接到一两个节点上执行,而不是均分到所有的hostList列出的节点。
在这个问题的追查过程中,发现了一些jdbc负载均衡需要注意的地方。


3 回答

-- 发现一个论坛的问题,问题模块不能选择 高可用方案,保存失败,提示"您尚未选择主题的类别"
2018-4-18 18:50
jdbc负载均衡需要注意的一些内容:
1.jdbc负载均衡配置一共三个参数,参数书写一定要正确,包括大小写,如:failoverEnable=true&hostList=192.168.105.214,192.168.105.213,192.168.105.211&gclusterId=gc1,曾发生将gclusterId中的Id写成ID报错
2.当有多个url时,需要gclusterId配置为不同值;
3.JDBC负载均衡是connection级别的,所以通过audit_log来分析负载均衡情况时,需要看sql_text或sql_command为Connect的记录,而不是看各节点执行的sql数; 因为是connection级,所以连接池也可能导致负载不均(连接到某个节点的连接池中的几个连接点击率太高,造成每次从连接池获取session都是获取到这几个connection)
4.JDBC负载均衡的作用域是一个应用实例,或者叫jvm实例。同一个应用程序被启动多次时(启动了多个实例),每个实例自己维护自己的hostList和负载均衡。
举个例子解释下,客户一个java应用程序A,A做的事情就是建立数据库连接然后执行一个SQL,当客户在一个服务器上同时启动了10个程序A时,每个A都会连接hostList中的第一个IP,所以就没负载均衡的效果了。
2018-4-18 19:02
客户现场的情况,就是使用bash脚本方式来调度运行jar程序,每次执行的jar只做少量connection,通过bash调用大量jar来完成整改作业流、业务并发的实现。
2018-4-18 19:04

撰写回答

您需要登录后才可以回帖 登录 | 立即注册

提问者

发布6
回答18

相关问题

相关资料