我正在使用cassandra3.x和node 10.13.0。我的工作内存中有100000个用户的数据(在给定代码中的“sortedrowmap”Map中)。我更新了所有的记录,通过迭代Map(有100000个用户的记录)来为每个用户使用。但它给我带来了总线连接错误。我在想我怎么才能摆脱这一切。
下面是上述说明的实现代码。
var cassClient = new cassandra.Client({contactPoints: ['localhost'],pooling: {
coreConnectionsPerHost: {
[distance.local] : 2,
[distance.remote] : 1
},
}, keyspace: 'xyz',
socketOptions: { readTimeout: 65000 }
});
rank = 0;
for (const [msisdn, totalearnings] of sortedRowMap) {
let updateRankQuery = "UPDATE users SET weeklyrank = " + rank + " WHERE
msisdn = " + msisdn;
cassClient.execute(updateRankQuery, function (error, result) {
if(!error){
rank++;
console.log("updateQuery: " + updateRankQuery)
}else{
console.log("ERROR: " + error)
}
})
}
它给了我一个错误:
错误:nohostavailableerror:尝试查询的所有主机都失败。尝试了第一个主机,127.0.0.1:9042:busyconnectionerror:到主机127.0.0.1:9042的所有连接都很忙,每个连接上有2048个请求正在进行中。请参见内部错误。
1条答案
按热度按时间8i9zcol21#
您需要增加每个连接的飞行中请求数。协议版本3+最多支持32k飞行中请求。您需要将相应的选项(maxrequestsperconnection)添加到
pooling
对象,比如:但是,如果所有请求都命中相同的节点,则仍然可以命中此异常。在这种情况下,您需要限制您的提交,或重新尝试
另请参见《税务发展指南》中的相应章节。