结果集传输参数调整避免写文件失败
gcluster_send_client_data_timeout
gcluster_send_client_data_timeout 参数为集群向客户端发送结果集数据时的超时参数,取值范围[0,100000],单位秒,默认为 30 秒。当参数设置为 0 时表示不设置超时,结果集发送无限等待,只有发送成功或失败才返回。
在网络环境较差场景下,或通过 JDBC 等开发接口获取结果集时增加了处理逻辑造成耗时较长时,如 JAVA 程序遍历 RESULT 后再将结果写到文件中,JAVA 写文件的 过 程 可 能 超 过 30 秒 , 就 会 出 现 连 接 失 败 问 题 ( 报 错“com.gbase.jdbc.exceptions.jdbc4.CommunicationsException:Communications link failure ” ) 。 此 时 可 以 通 过 调 大gcluster_send_client_data_timeout 参数规避。
Insert values 一次写入超大数据设置
max_allowed_packet
在进行超大数据的写入时,如通过 insert values 方式一次性写入数万行记录,需要调大 max_allowed_packet 参数。
可通过 set global max_allowed_packet = 134217728 的方式配置该参数。
注意:max_allowed_packet 参数必须写在配置文件的[gbased]下,[gbasedump]之上。
节点间数据传输参数
_gbase_sis_ctq_threads
用于 insert select,load 接收端数据处理的线程数,缺省值未 0,使用 CPU 核数,当该线程数不够用时,会创建临时线程协助处理,可以使用 show engine expressstatus 查看各个节点间的连接和 session 情况,以及发送和接收任务的情况。
_gbase_sis_ctq_threads 参数用于指定 CTQ 的个数(CommanTaskQueue 的简写,待执行的命令队列),一个 CTQ 对应一个任务执行器(Executor),即该参数可理解为 Executor 个数。参数默认取值为 CPU 核数的 2 倍。建议配置为 512。
在大规模集群并发场景下,CTQ 数不足会造成没有充足的任务执行器进行 SQL 提交等操作,需要反复进行 CTQ 数的判断和生成临时的执行器,两次判断之间间隔60 秒,从而出现性能问题。
_gbase_rep_receive_buffer_size
用于 insert 和 load 在节点间传输数据使用,表示某个节点与其它所有节点的连接
中,最大等待处理的数据大小,单位为 M。
_gbase_gns_queue_size
表示每个发送端 session 的消息队列长度,满了之后会等待并重试。默认取值为
4096,在出现 GNS 数据发送性能异常时,可调大该参数。