Aerospike-客户端上的命令执行超时
使用以下代码在Aerospike中加载数据。数据是BinMap类型的映射列表Aerospike-客户端上的命令执行超时,aerospike,aerospike-ce,Aerospike,Aerospike Ce,使用以下代码在Aerospike中加载数据。数据是BinMap类型的映射列表 for _, binMap := range data { id, ok := binMap["id"].(string) key, _ := as.NewKey("test", "myset", id) err := shared.Client.Put(nil, key, binMap) if err !=nil { fmt.Println(err) } 加载少量记录后,
for _, binMap := range data {
id, ok := binMap["id"].(string)
key, _ := as.NewKey("test", "myset", id)
err := shared.Client.Put(nil, key, binMap)
if err !=nil {
fmt.Println(err)
}
加载少量记录后,将收到以下错误消息
command execution timed out on client: Exceeded number of retries.
See `Policy.MaxRetries`. (last error: Node not found for partition
test:711 in partition table.)
对于每个迭代,分区测试编号都会更改。
即使在每个Put命令后等待5秒,错误仍会继续。我不确定错误消息中报告了什么超时。go客户端需要什么客户端配置
使用MacOs 10.15.3;go客户;Aerospike在docker 2.2.0.3上运行您的群集很可能没有正确形成,或者其网络设置不正确,无法让客户端访问所有节点。由于您使用的是Docker,请查看Lucien的Medium post。您的客户端未成功连接到Aerospike群集的所有“节点”-每个节点都将其分区所有权发送给客户端。有4K分区。每个记录都属于一个唯一的分区id。因此客户端一直试图写入上面的711分区所有者的节点,并在重试后放弃。我正在运行单节点群集。只是按照这里的指示走了。是否需要多节点安装?不,不需要多节点群集。单节点集群也可以。因此,您正在失去从客户端到节点的连接。这也可能与docker有关。go客户端似乎出了问题。我无法执行任何读/写操作。如果我重新启动应用程序(go客户端),我可以执行读/写操作。在循环中执行写操作会弄乱go客户机。“弄乱”是一种泛化。与Aerospike接口的大量使用的应用程序都是用Go编写的,包括Snapchat服务。因此,Go客户机肯定有效。如果可以重现问题,请在repo中打开一个bug:他正在使用单个节点进行测试。客户端似乎无法与服务器通信,这意味着存在网络问题。在循环存储记录时,经过几次迭代后,通信失败。前四五条记录存储在数据库中没有问题。请打开一个问题。人们在生产中大量使用该客户机,因此出现了一些问题,但不知道会发生什么。添加代码示例、输出,而不是服务器版本、客户端版本、客户端和服务器上的操作系统。我的数据中的mysteryTime格式可能会导致一些问题。仍在调查中。