计算节点参数说明
计算节点使用过程中,维护了许多系统配置参数,本文描述这些参数如何使用以及对功能带来什么影响。每个参数都有一个默认值,可以在服务启动时在server.xml配置文件中修改,也可以登录管理平台在参数配置页面进行修改。这些参数大多数可以在运行时使用动态加载(reload @@config)操作动态更改,无需停止并重新启动服务。部分参数也可以使用set方式修改。
adaptiveProcessor
参数说明:
Property | Value |
---|---|
参数值 | adaptiveProcessor |
是否可见 | 隐藏不显示 |
参数说明 | 控制启动服务时是否自动适配 |
默认值 | true |
Reload是否生效 | 否 |
参数设置:
server.xml中adaptiveProcessor参数配置 如下配置:
<property name="adaptiveProcessor">true</property><!--控制启动服务时是否自动适配-->
adaptiveProcessor参数默认为true,即开启自动适配,包括processor、processorExecutor和timerExecutor值都将自动适配。为false时则关闭自动适配。
参数作用:
开启自动适配后,计算节点会根据当前服务器配置和自动适配规则设定参数,即使在server.xml中对以下参数值进行配置,也不会生效,仍然会按照适配规则设置参数值。
<property name="processors">16</property><!--处理器数-->
<property name="processorExecutor">4</property><!--各处理器线程数-->
<property name="timerExecutor">4</property><!--定时器线程数-->
登录3325端口,执行show @@threadpool命令,查看当前processor、processorExecutor和timerExecutor值。例如:
mysql> show @@threadpool;
+-----------------+-----------+--------------+-----------------+----------------+------------+
| name | pool_size | active_count | task_queue_size | completed_task | total_task |
+-----------------+-----------+--------------+-----------------+----------------+------------+
| TimerExecutor | 4 | 0 | 15 | 50376807 | 50376822 |
| $NIOExecutor-0- | 4 | 0 | 0 | 99254 | 99254 |
| $NIOExecutor-1- | 4 | 1 | 0 | 81195 | 81196 |
| $NIOExecutor-2- | 4 | 2 | 0 | 140921 | 140923 |
| $NIOExecutor-3- | 4 | 1 | 0 | 48218 | 48219 |
| $NIOExecutor-4- | 4 | 0 | 0 | 39073 | 39073 |
| $NIOExecutor-5- | 4 | 0 | 0 | 31656 | 31656 |
| $NIOExecutor-6- | 4 | 0 | 0 | 167007 | 167007 |
| $NIOExecutor-7- | 4 | 1 | 0 | 27221 | 27222 |
+-----------------+-----------+--------------+-----------------+----------------+------------+
9 rows in set (0.00 sec)
$NIOExecutor有0到7,表示当前processor=8,对应的pool_size为4,表示processorExecutor=4,TimerExecutor对应的pool_size为4,表示timerExecutor=4。
cat /proc/cpuinfo| grep "processor"| wc -l
注意
计算节点在刚刚启动时并不会生成所有线程,而是用多少创建多少,因此执行show @@threadpool;命令,可能会显示如下图:
mysql> show @@threadpool;
+-----------------+-----------+--------------+-----------------+----------------+------------+
| name | pool_size | active_count | task_queue_size | completed_task | total_task |
+-----------------+-----------+--------------+-----------------+----------------+------------+
| TimerExecutor | 4 | 0 | 14 | 73720 | 73734 |
| $NIOExecutor-0- | 1 | 0 | 0 | 1 | 1 |
| $NIOExecutor-1- | 1 | 0 | 0 | 1 | 1 |
| $NIOExecutor-2- | 1 | 0 | 0 | 1 | 1 |
| $NIOExecutor-3- | 1 | 0 | 0 | 1 | 1 |
| $NIOExecutor-4- | 2 | 0 | 0 | 2 | 2 |
| $NIOExecutor-5- | 5 | 0 | 0 | 5 | 5 |
| $NIOExecutor-6- | 1 | 0 | 0 | 1 | 1 |
| $NIOExecutor-7- | 1 | 1 | 0 | 1 | 1 |
+-----------------+-----------+--------------+-----------------+----------------+------------+
9 rows in set (0.00 sec)
直到计算节点受到足够压力时才会达到自动适配的值,也就是说,自动适配的值为最大值。
allowMajorityElectionCount
参数说明:
Property | Value |
---|---|
参数值 | allowMajorityElectionCount |
是否可见 | 否 |
参数说明 | 此参数控制计算节点在特定条件下允许已下线节点重新参与选举的机制 |
默认值 | 0 |
最小值 | 0 |
最大值 | 200 |
参数设置:
<property name="allowMajorityElectionCount">0</property><!-- 如果在一分钟内,计算节点收到的KEEP_ALIVE大于该参数,同时收到的集群成员信息 >= ((集群成员总数/2)+1)时将允许已经下线的计算节点重新发起选举,默认0,不开启此机制-->
参数作用:
如果在一分钟内,计算节点收到的KEEP_ALIVE大于该参数,同时收到的集群成员信息 >= ((集群成员总数/2)+1)时,将允许已经下线的计算节点重新发起选举,默认0,不开启此机制
allowRCWithoutReadConsistentInXA
参数说明:
Property | Value |
---|---|
参数值 | allowRCWithoutReadConsistentInXA |
是否可见 | 否 |
参数说明 | 允许XA模式下使用不保证读写强一致性的RC隔离级别 |
默认值 | 0 |
Reload是否生效 | 是 |
参数设置:
server.xml中allowRCWithoutReadConsistentInXA参数配置 如下配置:
<property name="allowRCWithoutReadConsistentInXA">0</property><!-- 是否允许XA模式下使用不保证读写强一致性的RC隔离级别,0为是,1为否 -->
参数作用:
默认XA模式下只能选择REPEATABLE READ、SERIALIZABLE两种隔离级别。
若参数allowRCWithoutReadConsistentInXA设置成0,XA模式下允许使用保证事务读写一致性的READ COMMITTED隔离级别(但须注意原SQL涉及跨库查询被拆分多条语句多次查询时,会不停读到最新事务,故该模式下需尽量使用单库查询) ;若参数allowRCWithoutReadConsistentInXA设置成1,也允许XA模式下使用READ COMMITTED隔离级别,但是不能保证事务读写一致性,隔离级别实质介于READ COMMITED和READ UNCOMMITED之间,其性能优于设置成0的情况,且启动和同步加载时时会有日志提示,如下:
2020-03-12 15:36:03.719 [WARN][INIT][main] cn.hotpu.hotdb.a(519) -- Note that the READ COMMITTED isolation level in XA mode is essentially between READ COMMITTED and READ UNCOMMITTED at this time, which does not guarantee strong consistency of reading and writing.
allowReadConsistentInReadOnly
参数说明:
Property | Value |
---|---|
参数值 | allowReadConsistentInReadOnly |
是否可见 | 是 |
参数说明 | 开启实例级别只读后,是否保证读一致性 |
默认值 | false |
Reload是否生效 | 是 |
参数设置:
server.xml中allowReadConsistentInReadOnly参数配置:
<property name="allowReadConsistentInReadOnly">0</property><!--开启只读后是否保证读一致性,默认 false(consistent reading in instance readonly or not, default false) -->
参数作用:
控制开启实例级别只读后,是否保证读一致性。默认为0,不保证读一致性;若为1,则在多计算节点集群模式下enableListener和enableXA参数启用且部署了监听组件后,可保证读一致性。
autoReloadWhenSyncFailed
参数说明:
Property | Value |
---|---|
参数值 | autoReloadWhenSyncFailed |
是否可见 | 否 |
参数说明 | 集群间配置同步失败时是否触发自动的动态加载 |
默认值 | treu |
参数设置:
<property name="autoReloadWhenSyncFailed">0</property><!-- 集群间配置同步失败时是否触发自动的动态加载,默认true-->
autoIncrement
参数说明:
Property | Value |
---|---|
参数值 | autoIncrement |
是否可见 | 是 |
参数说明 | 全局自增序列模式。 |
默认值 | 1 |
Reload是否生效 | 是 |
参数作用:
控制表的自增序列是否可以全局自增,该参数设置范围为:0、1、2;
autocompleteOrder
参数说明:
Property | Value |
---|---|
参数值 | autocompleteOrder |
是否可见 | 否 |
参数说明 | 自动为带limit的语句补齐排序字段 |
默认值 | true |
Reload是否生效 | 是 |
参数设置:
<property name="autocompleteOrder">true</property><!-- 是否自动为带limit的语句补齐排序字段(Auto-complete order columns for query with limit) -->
参数作用:
autocompleteOrder默认自动为带limit的语句补齐排序的字段,设置为false时,不带排序字段。 参数为false时,计算节点下发带limit的语句时,不添加排序字段:
参数为true时,计算节点下发带limit的语句时,自动添加排序字段:
badConnAfterContinueGet
参数说明:
Property | Value |
---|---|
参数值 | badConnAfterContinueGet |
是否可见 | 否 |
参数说明 | 是否继续获取连接 |
默认值 | true |
Reload是否生效 | 是 |
参数设置:
<property name="badConnAfterContinueGet">true</property><!-- 是否继续获取连接 true 为继续获取连接,false 为返回null,不继续获取,由外层创建新连接或其他操作 -->
参数作用:
计算节点从连接池获取连接后时,如果进行了连接有效性检验并获取到了一个失效的连接,当该参数为true,连接池将继续获取可用连接,为false,连接池将返回null,由外部代码逻辑继续进行处理。
badConnAfterFastCheckAllIdle
参数说明:
Property | Value |
---|---|
参数值 | badConnAfterFastCheckAllIdle |
是否可见 | 否 |
参数说明 | 当获取坏的后端连接时,是否快速检测所有空闲连接 |
默认值 | true |
Reload是否生效 | 是 |
参数设置:
<property name="badConnAfterFastCheckAllIdle">true</property><!-- 当获取坏的后端连接时,是否快速检测所有空闲连接,true为检测,false为不检测,默认为true-->
参数作用:
当获取到坏的后端连接,计算节点连接池是否快速检测全部的空闲连接。
bakUrl & bakUsername & bakPassword
参数说明:
Property | Value |
---|---|
参数值 | bakUrl |
是否可见 | 是 |
参数说明 | 从配置库地址 |
默认值 | jdbcmysql//127.0.0.1:3306/hotdb_config |
Reload是否生效 | 是 |
Property | Value |
---|---|
参数值 | bakUsername |
是否可见 | 是 |
参数说明 | 从配置库用户名 |
默认值 | hotdb_config |
Reload是否生效 | 是 |
Property | Value |
---|---|
参数值 | bakPassword |
是否可见 | 是 |
参数说明 | 从配置库密码 |
默认值 | DRDS_config@2013 |
Reload是否生效 | 是 |
参数作用:
bakUrl和bakUsername以及bakPassword属于配套参数,用于配置库高可用功能。若使用配置库高可用,则需要设置为对应从配置库的信息且保证主从配置库实例的复制关系正常,且互为主备,当主配置库发生故障时会自动切换到从配置库。
切换过程中,若存在复制延迟,会等待从配置库复制延迟追上后切换并提供服务。
若不需要主备配置库,则这里配置为跟主配置库信息一致或不配置从配置库即可。
<property name="bakUrl">jdbc:mysql://192.168.210.31:3306/hotdb_config</property><!-- 从配置库地址,需指定配置库服务所在的真实IP地址 -->
<property name="bakUsername">hotdb_config</property><!-- 从配置库用户名 -->
<property name="bakPassword">DRDS_config@2013</property><!-- 从配置库密码 -->
当配置库因主库故障发生切换后,主库恢复正常且检测过数据主从一致,此时可恢复主备配置库重新到可切换状态,需要将配置库里的houdb_config_info表里k字段为hotdb_master_config_status这一行的v值从0更新为1,并在管理端执行reload @@config,才会重新使用主配置库
mysql> select * from hotdb_config_infoG
***************************1.row**************************
k: hotdb_master_config_status
v: 1
description: NULL
bnlUsersOnly
参数说明:
Property | Value |
---|---|
参数值 | bnlUsersOnly |
是否可见 | 否 |
参数说明 | 控制是否仅bnlUsers优先选择BNL算法进行JOIN |
默认值 | false |
Reload是否生效 | 是 |
参数设置:
server.xml中bnlUsersOnly参数配置,如下配置:
<property name="bnlUsersOnly">false</property><!-- 仅允许BNL用户优先选择BNL算法进行JOIN(only bnlUsers are allowed to choose BNL algorithm for JOIN) -->
参数作用:
bnlUsersOnly参数为隐藏参数,默认为false。开启后对于JOIN逻辑,优先使用BNL算法进行,BNL用户的配置方式如下:
- 创建计算节点用户,动态加载。
- 计算节点配置库执行以下SQL:
insert into hotdb_config_info values('bnl_users','bnl@%','BNL用户列表');
注意
'bnl_users'和'BNL用户列表'为固定信息,只需修改'bnl@%'为计算节点用户即可。
- 开启bnlUsersOnly参数为true,并进行动态加载。