更新时间:2024-11-12 GMT+08:00
分享

通信库参数

本节介绍通信库相关的参数设置及取值范围等内容。

tcp_keepalives_idle

参数说明:在支持TCP_KEEPIDLE套接字选项的系统上,设置发送保持活跃信号的间隔秒数。不设置发送保持活跃信号,连接就会处于闲置状态。

  • 如果操作系统不支持TCP_KEEPIDLE选项 ,这个参数的值必须为0。
  • 在通过Unix域套接字进行的连接的操作系统上,这个参数将被忽略。
  • 将该值设置为0时,将使用系统的值。
  • 该参数在不同的会话之间不共享,也就是说不同的会话连接可能有不同的值。
  • 查看该参数时查出来的是当前会话连接内的参数值,而不是GUC副本的值。

参数类型:整型

参数单位:s

取值范围:0 ~ 3600

默认值:60

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60,表示tcp_keepalives_idle为60s;带单位取值1min,表示tcp_keepalives_idle为1min。取值如果要带单位,必须为s、min、h、d。

设置建议:设置时请确认操作系统是否支持TCP_KEEPIDLE套接字选项。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

tcp_keepalives_interval

参数说明:在支持TCP_KEEPINTVL套接字选项的操作系统上,设置重新传输之间等待响应的时间。

  • 如果操作系统不支持TCP_KEEPINTVL选项,这个参数的值必须为0。
  • 在通过UNIX域套接字进行的连接的操作系统上,这个参数将被忽略。
  • 将该值设置为0时,将使用系统的值。
  • 该参数在不同的会话之间不共享,也就是说不同的会话连接可能有不同的值。
  • 查看该参数时查出来的是当前会话连接内的参数值,而不是GUC副本的值。

参数类型:整型

参数单位:s

取值范围:0 ~ 180

默认值:30

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60,表示tcp_keepalives_interval为60s;带单位取值1min,表示tcp_keepalives_interval为1min。取值如果要带单位,必须为s、min、h、d。

设置建议:设置时请确认操作系统是否支持TCP_KEEPINTVL套接字选项。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

tcp_keepalives_count

参数说明:在支持TCP_KEEPCNT套接字选项的操作系统上,设置GaussDB服务端在断开与客户端连接之前可以等待的保持活跃信号个数。

  • 如果操作系统不支持TCP_KEEPCNT选项,这个参数的值必须为0。
  • 在通过Unix域套接字进行连接的操作系统上,这个参数将被忽略。
  • 将该值设置为0时,将使用系统的值。
  • 该参数在不同的会话之间不共享,也就是说不同的会话连接可能有不同的值。
  • 查看该参数时查出来的是当前会话连接内的参数值,而不是GUC副本的值。

参数类型:整型

参数单位:

取值范围:0 ~ 100,其中0表示GaussDB未收到客户端反馈的保持活跃信号则立即断开连接。

默认值:20

设置方式:该参数属于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套接字选项。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

tcp_syn_retries

参数说明:在支持TCP_SYNCNT套接字选项的操作系统上,设置GaussDB连接其他内部节点时,建立连接三次握手阶段SYN包发送失败而重传的次数。

参数类型:整型

参数单位:

取值范围:0-127,其中0表示跟随操作系统设置。

默认值:0

设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。

设置建议:保持默认。

设置不当的风险与影响:该参数设置过小(大于0)时,网络波动情况下,会导致SYN重传次数较少,若重传时长少于网络恢复时长,会导致建连失败;该参数设置过大时,网络不通情况下,会导致SYN重传次数较多,重传时间较长,造成整体报错的时间变长。

  • 如果操作系统不支持TCP_SYNCNT选项,这个参数的值将不生效,默认为0。
  • 在通过Unix域套接字进行连接的操作系统上,这个参数将被忽略。

comm_tcp_mode

参数说明通信库使用TCP协议建立数据通道的切换开关,重启集群生效。

SCTP协议的连接不再提供支持,为了保持兼容,提供此参数的接口,但此参数会在设置过程中强制改为on。

参数类型:布尔型

参数单位:

取值范围:CN设置为on表示使用TCP模式连接DNDN设置为on表示DN间使用TCP代理通信。

默认值:on

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_sctp_port

参数说明:TCP代理通信库使用的TCP协议侦听端口,负责侦听数据报文通道。

参数类型:整型

参数单位:

取值范围:0 ~ 65535

默认值:25110(实际值为GUC参数port值+2,取决于用户配置)

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:不建议用户配置,集群安装时会自动下发相关配置。

设置不当的风险与影响:集群部署时会自动分配此端口号,请不要轻易修改此参数,如端口号配置不正确会导致数据库通信失败。

comm_control_port

参数说明:TCP代理通信库使用的TCP协议侦听端口。

参数类型:整型

参数单位:

取值范围:0 ~ 65535

默认值:25111(实际值为GUC参数port值+3,取决于用户配置)

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:不建议用户配置,集群安装时会自动下发相关配置。

设置不当的风险与影响:集群部署时会自动分配此端口号,请不要轻易修改此参数,如端口号配置不正确会导致数据库通信失败。

comm_max_datanode

参数说明:TCP代理通信库支持的最大DN数。

参数类型:整型

参数单位:

取值范围:1 ~ 8192

默认值:单个节点支持的最大主DN数量。

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐设置为256。

设置不当的风险与影响:参数取值小于当前集群DN数量时,会导致建立连接失败。设置过大会占用过多内存。

comm_max_stream

参数说明:TCP代理通信库支持的最大并发数据流数。该参数必须大于业务并发数*每并发平均stream算子数*query_dop的平方。

参数类型:整型

参数单位:

取值范围:1 ~ 60000

默认值:1024

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:

  • 不建议该参数值设置过大,因为comm_max_stream会占用内存(占用内存=256byte*comm_max_stream*comm_max_datanode),若并发数据流过大,查询较为复杂及smp过大都会导致内存不足。
  • 如果comm_max_stream参数值较小,进程内存充足,可以适当将comm_max_stream值调大。

设置不当的风险与影响:参数设置过小会限制大并发分布式stream查询;设置过大可能会占用过多内存。

comm_max_receiver

参数说明:TCP代理通信库内部接收线程数量。

参数类型:整型

参数单位:

取值范围:1 ~ 50

默认值:4

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值,避免过多的线程资源,带来的线程切换调度。

设置不当的风险与影响:若设置过大会启动过多数据接收线程,造成线程资源浪费。

comm_quota_size

参数说明:TCP代理通信库最大可连续发送包总大小。

参数类型:整型

参数单位:kB

取值范围:0 ~ 2048000

默认值:1024

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值1024,表示comm_quota_size为1024kB;带单位取值1MB,表示comm_quota_size为1MB。取值如果要带单位,必须为kB、MB、GB。

设置建议:推荐使用默认值。使用1GE网卡时,建议取较小值,推荐设置为20kB~40kB。

设置不当的风险与影响:设置过小可能会导致TCP通信库收发阶段等待quota。

comm_usable_memory

参数说明:单个DN内TCP代理通信库缓存最大可使用内存。

参数类型:整型

参数单位:kB

取值范围:102400 ~ 1073741823

默认值:4096000(即4000MB)

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值102400,表示comm_usable_memory为102400kB;带单位取值100MB,表示comm_usable_memory为100MB。取值如果要带单位,必须为kB、MB、GB。

设置建议:推荐使用默认值。此参数需根据环境内存及部署方式具体配置。

设置不当的风险与影响:参数设置过大会造成OOM,过小会降低TCP代理通信库性能。

comm_memory_pool

参数说明:单个DN内TCP代理通信库可使用内存池资源的容量大小。

参数类型:整型

参数单位:kB

取值范围:102400 ~ 1073741823

默认值:2048000(即2000MB)

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值102400,表示comm_memory_pool为102400kB;带单位取值100MB,表示comm_memory_pool为100MB。取值如果要带单位,必须为kB、MB、GB。

设置建议:推荐使用默认值。此参数需根据实际业务情况做调整,若通信库使用内存小,可设置该参数数值较小,反之设置数值较大。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_memory_pool_percent

参数说明:单个DN内TCP代理通信库可使用内存池资源的百分比,用于自适应负载预留通信库通信消耗的内存大小。

参数类型:整型

参数单位:

取值范围:0 ~ 100

默认值:0

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。此参数需根据实际业务情况做调整,若通信库使用内存小,可设置该参数数值较小,反之设置数值较大。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_client_bind

参数说明通信库客户端发起连接时是否使用bind绑定指定IP。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示绑定指定IP。
  • off:表示不绑定指定IP。

默认值:off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:如果集群某一节点存在多个IP处于同一通信网段时,需设置为on。此时将绑定本地listen_addresses指定的IP发起通信,随机端口号不能重复使用,集群并发数量会受到可用随机端口号数量的限制。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_no_delay

参数说明是否使用通信库连接的NO_DELAY属性。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示使用NO_DELAY属性。
  • off:表示不使用NO_DELAY属性。

默认值:off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:总体上,时延敏感型业务建议打开;吞吐要求高时,建议关闭。此外,当集群出现因每秒接收数据包过多导致的丢包时,需设置为off,以便小包合并成大包发送,减少数据包总数。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_debug_mode

参数说明:TCP代理通信库debug模式开关,该参数设置是否打印通信层详细日志。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示打印通信库详细debug日志。
  • off:表示不打印通信库详细debug日志。

默认值:off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,建议仅在调试时打开。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_ackchk_time

参数说明:无数据包接收情况下,该参数设置通信库服务端主动ACK触发时长。

参数类型:整型

参数单位:ms

取值范围:0 ~ 20000。取值为0表示关闭此功能。

默认值:2000

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值60,表示comm_ackchk_time为60ms;带单位取值1min,表示comm_ackchk_time为1min。取值如果要带单位,必须为ms、s、min、h、d。

设置建议:推荐使用默认值。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_timer_mode

参数说明:TCP代理通信库timer模式开关,该参数设置是否打印通信层各阶段时间桩。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示打印通信库详细时间桩日志。
  • off:表示不打印通信库详细时间桩日志。

默认值:off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,建议仅在调试时打开。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

comm_stat_mode

参数说明:TCP代理通信库stat模式开关,该参数设置是否打印通信层的统计信息。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示打印通信库统计信息日志。
  • off:表示不打印通信库统计信息日志。

默认值:off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

设置建议:设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,建议仅在调试时打开。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

enable_stateless_pooler_reuse

参数说明pooler连接池复用切换开关,开启后可对已有的空闲TCP连接进行复用,重启集群生效。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示使用pooler复用模式。
  • off:表示关闭pooler复用模式。

默认值:on

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:CN和DN需要同步设置。如果CN设置enable_stateless_pooler_reuse为off,DN设置enable_stateless_pooler_reuse为on会导致集群不能正常通信,因此必须对该参数做CN和DN全局相同的配置,重启集群生效。

设置不当的风险与影响:当该参数关闭时,pooler连接池复用粒度会降低,DN的内存消耗可能会增加。

comm_cn_dn_logic_conn

参数说明CN和DN间逻辑连接特性开关,重启集群生效。

不再提供CN和DN之间的逻辑连接支持,为了保持兼容,提供此参数的接口,但此参数会在设置过程中强制改为off。

参数类型:布尔型

参数单位:

取值范围:

  • on:表示CN和DN之间连接为逻辑链接,使用libcomm组件。
  • off:表示CN和DN之间连接为物理连接,使用libpq组件。

默认值:off

设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。

设置建议:推荐使用默认值。

设置不当的风险与影响:该参数开启时,CN和DN之间会使用逻辑连接用于解决socket数量上限瓶颈,逻辑连接通信库会有性能开销。

COMM_IPC

参数说明通信性能问题定位开关,该参数设置是否打印通信各个节点的报文收发情况。

参数类型:布尔型

参数单位:

取值范围
  • on:表示打开报文收发统计日志。
  • off:表示关闭报文收发统计日志。

默认值off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

set logging_module='on(COMM_IPC)';   --打开
set logging_module='off(COMM_IPC)';   --关闭
show logging_module;   --查看设置结果

设置建议:设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,建议仅在调试时打开,调试完后及时关闭。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

COMM_PARAM

参数说明通信性能问题定位开关,该参数设置是否打印节点通信过程中session参数设置情况。

参数类型:布尔型

参数单位:

取值范围
  • on:表示打开连接的session参数设置日志。
  • off:表示关闭连接的session参数设置日志。

默认值off

设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。

set logging_module='on(COMM_PARAM)';   --打开
set logging_module='off(COMM_PARAM)';   --关闭
show logging_module;   --查看设置结果

设置建议:设置为on时,打印日志量较大,会增加额外的overhead并降低数据库性能,建议仅在调试时打开,调试完后及时关闭。

设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。

相关文档