Aerospike scan返回done(abandoned-response-timeout)如何调整超时参数?
调整方案
你遇到的done (abandoned-response-timeout)状态为Aerospike服务端扫描任务等待客户端拉取结果超时,主动终止任务导致,默认配置下客户端会直接返回已接收到的部分数据,不会抛出异常,可按以下两个维度调整参数:
1. 服务端参数调整(版本3.15.1.4适用)
需要调整服务端扫描任务等待客户端的最大空闲时间,配置方式如下:
- 静态配置(需重启节点生效):在
aerospike.conf的service配置块中添加如下内容,单位为毫秒:
scan-client-max-idle 30000
- 动态配置(无需重启,即时生效):在任意节点执行如下命令:
asinfo -v 'set-config:context=service;scan-client-max-idle=30000'
可根据你单次扫描的预估耗时调整数值,建议设为预估最大耗时的1.5倍以上。
2. Go客户端参数调整
需要修改ScanPolicy相关配置,同时开启超时抛错逻辑:
- 调整超时参数:
TotalTimeout:设置为整个扫描任务的最大总超时,需大于服务端scan-client-max-idle的配置值SocketTimeout:设置为单节点socket通信超时,建议配置为5000~10000毫秒
- 开启超时抛错误逻辑:将
ScanPolicy的FailOnClusterChange设置为true,同时在扫描结果回调时判断返回的Error字段,若存在非空错误则直接向上抛出,不要处理已返回的部分数据。
额外优化建议
如果单次扫描的数据量超过100万条,建议拆分扫描范围(比如按主键哈希范围拆分多个子扫描任务),避免单次任务耗时过长触发超时。
内容的提问来源于stack exchange,提问作者Joehl
相关产品推荐
相关产品推荐

