FAQ : ERROR:pooler: The node(oid:17036) has no available solt, the number of slot in use reaches upper limit!
GBase社区管理员一、问题描述
分布式部署模式下,使用 jmeter 进行性能压测,并发1000(并发超过400以后就会出现),客户端返回以下错误:

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








三、问题原因
因 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个关联表中的课程表调成复制表,即可规避风险。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526