GBase 8c
安装配置
文章

FAQ : ERROR:pooler: The node(oid:17036) has no available solt, the number of slot in use reaches upper limit!

GBase社区管理员
发表于2023-04-27 13:10:2356次浏览0个评论

一、问题描述

分布式部署模式下,使用 jmeter 进行性能压测,并发1000(并发超过400以后就会出现),客户端返回以下错误:

二、问题背景

 jmeter 进行性能压测逻辑:

  1. 初始化有3张表,用户表、课程表、分数表,其中课程表为固定的40条数据。
  2. 整个压测过程,主要有4个循环事务:1.新增用户 2.用户表单表查询 3.分数表更新 4.用户表、课程表、分数表3表关联查询。
  3. 并发数1000,持续时间 30 min
  4. 详细内容如下:


三、问题原因

因 comm_max_stream 不足导致,需要增大 comm_max_stream 值。(参考资料:https://bbs.huaweicloud.com/blogs/239863

分析过程:

1.在DN节点上,发生 FATAL: No free proc is available to create a new connection for cn 错误(如果未发现该错误日志,可降低 dn 节点的 max_connecctions 配置尝试复现)

2.在此次压测中,其中3表关联查询的执行计划为 stream 重分布(最大的表进行了重分布):

3. 在使用 stream 时,customer 和 producer 会分别占用 proc,因此在 dn 上一个查询不止占用一个 proc, 多表 join 时,一个 dn 上会占用多个 proc,大并发下,可能会引发该问题。


四、解决方式

(1)增加 comm_max_stream 值,以下值仅供参考,需根据实际情况进行考量

enable_memory_limit = on

shared_buffers=10GB

cstore_buffers=128MB

max_connections=4000

comm_max_stream=8000

max_prepared_transactions=8192

maintenance_work_mem = 2GB

max_process_memory = 60GB

temp_buffers=64MB

effective_cache_size = 30GB

max_pool_size = 8192

work_mem = 2MB

max_active_statements=100

audit_enabled=off

checkpoint_segments=128

checkpoint_timeout=30min

enable_alarm= off

enable_codegen =off

allow_concurrent_tuple_update=on

enable_data_replicate = off

full_page_writes=on

max_files_per_process =1024

use_workload_manager=off

wal_buffers=16MB

fsync=on

enable_mergejoin = on

enable_nestloop = on

enable_hashjoin = on

enable_bitmapscan =on

wal_log_hints=off

log_duration =off

enable_page_lsn_check=off

enable_user_metric_persistent=off

random_page_cost = 1.1

enable_xlog_prune = on

max_size_for_xlog_prune = 10485760

enable_opfusion = on

comm_quota_size = 1024000

(2)尝试调整关联语句的执行计划,在该用例场景下,将3个关联表中的课程表调成复制表,即可规避风险。



评论已关闭