通信库参数
本节介绍通信库相关的参数设置及取值范围等内容。
tcp_keepalives_idle
参数说明:在支持TCP_KEEPIDLE套接字选项的系统上,设置发送活跃信号的间隔秒数。不设置发送保持活跃信号,连接就会处于闲置状态。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
- 如果操作系统不支持TCP_KEEPIDLE选项 ,这个参数的值必须为0。
- 在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。
取值范围:0-3600,单位为s。
默认值:1min
tcp_keepalives_interval
参数说明:在支持TCP_KEEPINTVL套接字选项的操作系统上,以秒数声明在重新传输之间等待响应的时间。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:0-180,单位为s。
默认值:30
- 如果操作系统不支持TCP_KEEPINTVL选项,这个参数的值必须为0。
- 在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。
tcp_keepalives_count
参数说明:在支持TCP_KEEPCNT套接字选项的操作系统上,设置GaussDB服务端在断开与客户端连接之前可以等待的保持活跃信号个数。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
- 如果操作系统不支持TCP_KEEPCNT选项,这个参数的值必须为0。
- 在通过Unix域套接字进行连接的操作系统上,这个参数将被忽略。
取值范围:0-100,其中0表示GaussDB未收到客户端反馈的保持活跃信号则立即断开连接。
默认值:20
tcp_user_timeout
参数说明:在支持TCP_USER_TIMEOUT套接字选项的操作系统上,设置GaussDB在发送数据时,指定传输的数据在TCP连接被强制关闭之前可以保持未确认状态的最大时长。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
- 如果操作系统不支持TCP_USER_TIMEOUT选项,这个参数的值将不生效,默认为0。
- 在通过Unix域套接字进行连接的操作系统上,这个参数将被忽略。
取值范围:0-3600000,单位为ms。其中0表示跟随操作系统设置。
默认值: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秒不再变化。
tcp_syn_retries
参数说明:在支持TCP_SYNCNT套接字选项的操作系统上,设置GaussDB连接其他内部节点时,建立连接三次握手阶段SYN包发送失败而重新传的次数。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
- 如果操作系统不支持TCP_SYNCNT选项,则tcp_syn_retries参数的值将不生效,默认为0。
- 在通过Unix域套接字进行连接的操作系统上,tcp_syn_retries参数将被忽略。
取值范围:0-127,0表示与操作系统设置保持一致。
默认值:0
comm_tcp_mode
参数说明:通信库使用TCP协议建立数据通道的切换开关,重启集群生效。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
SCTP协议的连接不再提供支持,为了保持兼容,提供此参数的接口,但此参数会在设置过程中强制改为on。
取值范围:布尔型,CN设置为on表示使用TCP模式连接DN,DN设置为on表示DN间使用TCP代理通信。
默认值:on
comm_sctp_port
参数说明:TCP代理通信库使用的TCP协议侦听端口,负责侦听数据报文通道。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
集群部署时会自动分配此端口号,请不要轻易修改此参数,如端口号配置不正确会导致数据库通信失败。
取值范围:整型,最小值为0,最大值为65535。
默认值:25110(实际值为GUC参数port值+2,取决于用户配置)
comm_control_port
参数说明:TCP代理通信库使用的TCP协议侦听端口。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
集群部署时会自动分配此端口号,请不要轻易修改此参数,端口号配置不正确会导致数据库通信失败。
取值范围:整型,最小值为0,最大值为65535。
默认值:25111(实际值为guc参数port值+3,取决于用户配置)
comm_max_datanode
参数说明:TCP代理通信库支持的最大DN数。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为1,最大值为8192。
默认值:单个节点支持的最大主DN数量为默认值。
推荐值:256
comm_max_stream
参数说明:TCP代理通信库支持的最大并发数据流数。该参数必须大于业务并发数*每并发平均stream算子数*query_dop的平方。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为1,最大值为60000。
默认值:1024
- 不建议该参数值设置过大,因为comm_max_stream会占用内存(占用内存=256byte*comm_max_stream*comm_max_datanode),若并发数据流过大,查询较为复杂及smp过大都会导致内存不足。
- 如果comm_max_stream参数值较小,进程内存充足,可以适当将comm_max_stream值调大。
comm_max_receiver
参数说明:TCP代理通信库内部接收线程数量。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为1,最大值为50。
默认值:4
comm_quota_size
参数说明:TCP代理通信库最大可连续发送包总大小。使用1GE网卡时,建议取较小值,推荐设置为20KB~40KB。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为0,最大值为2048000,默认单位为KB。
默认值:1MB
comm_usable_memory
参数说明:单个DN内TCP代理通信库缓存最大可使用内存。
此参数需根据环境内存及部署方式具体配置,过大会造成OOM,过小会降低TCP代理通信库性能。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为100*1024,最大值为1073741823,默认单位为KB。
默认值:4000MB
comm_memory_pool
参数说明:单个DN内TCP代理通信库可使用内存池资源的容量大小。
此参数需根据实际业务情况做调整,若通信库使用内存小,可设置该参数数值较小,反之设置数值较大。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为100*1024,最大值为1073741823,默认单位为KB。
默认值:2000MB
comm_memory_pool_percent
参数说明:单个DN内TCP代理通信库可使用内存池资源的百分比,用于自适应负载预留通信库通信消耗的内存大小。
此参数需根据实际业务情况做调整,若通信库使用内存小,可设置该参数数值较小,反之设置数值较大。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为0,最大值为100。
默认值:0
comm_client_bind
参数说明:通信库客户端发起连接时是否使用bind绑定指定IP。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示绑定指定IP。
- off表示不绑定指定IP。
如果集群某一节点存在多个IP处于同一通信网段时,需设置为on。此时将绑定本地listen_addresses指定的IP发起通信,随机端口号不能重复使用,集群并发数量会受到可用随机端口号数量的限制。
默认值:off
comm_no_delay
参数说明:是否使用通信库连接的NO_DELAY属性。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
如果集群出现因每秒接收数据包过多导致的丢包时,需设置为off,以便小包合并成大包发送,减少数据包总数。
默认值:off
comm_debug_mode
参数说明:TCP代理通信库debug模式开关,该参数设置是否打印通信层详细日志。
设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,仅在调试时打开。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示打印通信库详细debug日志。
- off表示不打印通信库详细debug日志。
默认值:off
comm_ackchk_time
参数说明:无数据包接收情况下,该参数设置通信库服务端主动ACK触发时长。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,最小值为0,最大值为20000,单位为毫秒。取值为0表示关闭此功能。
默认值:2000(2s)
comm_timer_mode
参数说明:TCP代理通信库timer模式开关,该参数设置是否打印通信层各阶段时间桩。
设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,仅在调试时打开。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示打印通信库详细时间桩日志。
- off表示不打印通信库详细时间桩日志。
默认值:off
comm_stat_mode
参数说明:TCP代理通信库stat模式开关,该参数设置是否打印通信层的统计信息。
设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,仅在调试时打开。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示打印通信库统计信息日志。
- off表示不打印通信库统计信息日志。
默认值:off
enable_stateless_pooler_reuse
参数说明:pooler连接池复用切换开关,开启后可对已有的空闲TCP连接进行复用,重启集群生效。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- 设置为on/true表示使用pooler复用模式。
- 设置为off/false表示关闭pooler复用模式。
CN和DN需要同步设置。如果CN设置enable_stateless_pooler_reuse为off,DN设置enable_stateless_pooler_reuse为on会导致集群不能正常通信,因此必须对该参数做CN和DN全局相同的配置,重启集群生效。
默认值:on
comm_cn_dn_logic_conn
参数说明:CN和DN间逻辑连接特性开关,重启集群生效。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- 设置为on/true表示CN和DN之间连接为逻辑链接,使用libcomm组件。
- 设置为off/false表示CN和DN之间连接为物理连接,使用libpq组件。
不再提供CN和DN之间的逻辑连接支持,为了保持兼容,提供此参数的接口,但此参数会在设置过程中强制改为off。
默认值:off
COMM_IPC
参数说明:通信性能问题定位开关,该参数设置是否打印通信各个节点的报文收发情况。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
- 设置为on/true表示打开报文收发统计日志。
- 设置为off/false表示关闭报文收发统计日志。
set logging_module='on(COMM_IPC)'; --打开 set logging_module='off(COMM_IPC)'; --关闭 show logging_module; --查看设置结果。
设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,仅在调试时打开,打开后及时关闭。
默认值:off
COMM_PARAM
参数说明:通信性能问题定位开关,该参数设置是否打印节点通信过程中session参数 设置情况。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
- 设置为on/true表示打开连接的session参数设置日志。
- 设置为off/false表示关闭连接的session参数设置日志。
set logging_module='on(COMM_PARAM)'; --打开 set logging_module='off(COMM_PARAM)'; --关闭 show logging_module; --查看设置结果
设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,仅在调试时打开,打开后及时关闭。
默认值:off