通信库参数
本节介绍通信库相关的参数设置及取值范围等内容。
tcp_keepalives_idle
参数说明:在支持TCP_KEEPIDLE套接字选项的系统上,设置发送保持活跃信号的间隔秒数。不设置发送保持活跃信号,连接就会处于闲置状态。该参数可在PDB级别设置。
- 如果操作系统不支持TCP_KEEPIDLE选项 ,这个参数的值必须为0。
- 在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。
- 将该值设置为0时,将使用系统的值。
- 该参数在不同的会话之间不共享,也就是说不同的会话连接可能有不同的值。
- 查看该参数时查出来的是当前会话连接内的参数值,而不是GUC副本的值。
参数类型:整型
参数单位:s
取值范围:0 ~ 3600
默认值:60。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60,表示tcp_keepalives_idle为60s;带单位取值1min,表示tcp_keepalives_idle为1min。取值如果要带单位,必须为s、min、h、d。
设置建议:设置时请确认操作系统是否支持TCP_KEEPIDLE套接字选项。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
tcp_keepalives_interval
参数说明:在支持TCP_KEEPINTVL套接字选项的操作系统上,设置重新传输之间等待响应的时间。该参数可在PDB级别设置。
- 如果操作系统不支持TCP_KEEPINTVL选项,这个参数的值必须为0。
- 在通过UNIX域套接字进行的连接的操作系统上,这个参数将被忽略。
- 将该值设置为0时,将使用系统的值。
- 该参数在不同的会话之间不共享,也就是说不同的会话连接可能有不同的值。
- 查看该参数时查出来的是当前会话连接内的参数值,而不是GUC副本的值。
参数类型:整型
参数单位:s
取值范围:0 ~ 180
默认值:30。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60,表示tcp_keepalives_interval为60s;带单位取值1min,表示tcp_keepalives_interval为1min。取值如果要带单位,必须为s、min、h、d。
设置建议:设置时请确认操作系统是否支持TCP_KEEPINTVL套接字选项。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
tcp_keepalives_count
参数说明:在支持TCP_KEEPCNT套接字选项的操作系统上,设置GaussDB服务端在断开与客户端连接之前可以等待的保持活跃信号个数。该参数可在PDB级别设置。
- 如果操作系统不支持TCP_KEEPCNT选项,这个参数的值必须为0。
- 在通过UNIX域套接字进行连接的操作系统上,这个参数将被忽略。
- 将该值设置为0时,将使用系统的值。
- 该参数在不同的会话之间不共享,也就是说不同的会话连接可能有不同的值。
- 查看该参数时查出来的是当前会话连接内的参数值,而不是GUC副本的值。
参数类型:整型
参数单位:无
取值范围:0 ~ 100,其中0表示GaussDB未收到客户端反馈的保持活跃信号则立即断开连接。
默认值:20。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。
设置建议:设置时请确认操作系统是否支持TCP_KEEPCNT套接字选项。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
tcp_user_timeout
参数说明:在支持TCP_USER_TIMEOUT套接字选项的操作系统上,设置GaussDB在发送数据时,指定传输的数据在TCP连接被强制关闭之前可以保持未确认状态的最大时长。
- 如果操作系统不支持TCP_USER_TIMEOUT选项,这个参数的值将不生效,默认为0。
- 在通过UNIX域套接字进行连接的操作系统上,这个参数将被忽略。
参数类型:整型
参数单位:ms
取值范围:0 ~ 3600000
默认值:0,表示跟随操作系统设置。
注意,不同操作系统内核下,这个参数生效结果将不同:
- aarch64 EulerOS(Linux内核版本:4.19),超时时间即为该参数设置值。
- x86 Euler2.5(Linux内核版本:3.10),超时时间不是该参数设置值,而是不同区间的最大值,即超时时间取值为:tcp_user_timeout设置值所处“Linux TCP重传总耗时”区间的上限最大值。例如:tcp_user_timeout=40000时,重传总耗时为51秒。
表1 x86 Euler2.5(Linux内核版本:3.10)tcp_user_timeout参数取值示意 Linux TCP重传次数
Linux TCP重传总耗时区间(秒)
tcp_user_timeout设置举例(毫秒)
实际Linux TCP重传总耗时(秒)
1
(0.2,0.6]
400
0.6
2
(0.6,1.4]
1000
1.4
3
(1.4,3]
2000
3
4
(3,6.2]
4000
6.2
5
(6.2,12.6]
10000
12.6
6
(12.6,25.4]
20000
25.4
7
(25.4,51]
40000
51
8
(51,102.2]
80000
102.2
9
(102.2,204.6]
150000
204.6
10
(204.6,324.6]
260000
324.6
11
(324.6,444.6]
400000
444.6
注:TCP每次重传耗时随重传次数指数增加,当TCP一次重传到达120秒后,后续每次重传都将耗时120秒不再变化。
设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
设置建议:设置时请确认操作系统是否支持TCP_USER_TIMEOUT套接字选项。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
comm_proxy_attr
参数说明:通信代理库相关参数配置。
- 该参数仅支持欧拉2.9系统下的集中式ARM单机。
- 本功能在线程池开启(GUC参数enable_thread_pool取值为on)状态下生效。
- 配置该参数时需同步配置GUC参数local_bind_address为libos_kni的网卡IP。
- 参数模板:comm_proxy_attr = '{enable_libnet:true, enable_dfx:false, numa_num:4, numa_bind:[[30,31],[62,63],[94,95],[126,127]]}'
- 可配置参数说明。
- enable_libnet:是否开启用户态协议,取值范围:true、false。
- enable_dfx:是否开启通信代理库视图,取值范围:true、false。
- numa_num:机器环境中numa的数量,支持2P、4P服务器,取值范围:4、8。
- numa_bind:代理线程绑核参数,每个numa两个CPU绑核,共numa_num组,取值范围:[0,cpu数-1]。
参数类型:字符串
参数单位:无
取值范围:长度大于0的字符串。
默认值:"none"
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:comm_proxy配置为非“none”值时,需要根据参数说明合理配置,否则无法正常使用该功能。
umdk_enabled
参数说明:控制当前数据库主备DN是否开启UMDK功能。若DN主备间通信使用UMDK通信协议,则DN上相关日志关键字为“umdk”,若DN主备间通信使用TCP协议,则记录log日志。目前仅部分场景支持该功能。
参数类型:布尔型
参数单位:无
取值范围:
- on:开启UMDK功能,若当前数据库实例不支持UMDK网络通信协议,则DN主备间通信走TCP协议;若当前数据库实例支持UMDK网络通信协议,DN主备间通信走UMDK协议。
- off:不开启UMDK功能,DN主备间通信走TCP协议。
默认值:off
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值。可以根据参数使用说明的具体使用场景进行设置。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
- GaussDB数据库适配UMDK通信协议栈,UMDK能力由操作系统提供和维护。
- GaussDB数据库侧默认关闭该参数。参数打开后,GaussDB数据库能否支持该能力取决于操作系统是否提供且支持UMDK功能。
- UMDK能力依赖硬件网卡和软件OS配置,例如:硬件网卡:1823V200网卡,OS:HCE2.0。
- 检测环境是否具备UMDK能力:root用户执行lsmod | grep ums语句查看操作系统是否加载了UMS模块。
若通过执行语句发现当前环境不支持UMDK(UMS模块)或者UMS模块故障,若开启umdk_enabled会导致主备建连失败。需要保证环境具备UMDK能力后再开启umdk_enabled。
umdk_port
参数说明:当DN主备间通信使用UMDK协议时,主备DN网络通信链路的侦听端口。
参数类型:整型
参数单位:无
取值范围:1 ~ 65535
默认值:dataPortBase+15,dataPortBase的值为数据库初次安装时GUC参数port的取值。
设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
设置建议:推荐使用默认值,不建议用户配置。
设置不当的风险与影响:配置不当可能会导致端口冲突,影响数据库正常启动。
- GaussDB数据库适配UMDK通信协议栈,UMDK能力由操作系统提供和维护。
- GaussDB数据库侧默认不会侦听umdk_port,需要在打开GUC参数umdk_enabled,且当前环境硬件和软件支持UMDK协议时,数据库UMDK协议的功能才会开启,相关端口才会被侦听,DN主备开始执行UMS网络协议(UMS为UMDK的网络协议族)。