我使用spring-webflux和mongodb-reactive驱动程序测试springboot 2.0.0.M3 并且不明白我的代码为什么不消耗CPU(低于2%)。 内存是可以的(70%用于32GB),I / O很低(硬盘是静默:)) 最后我有一个错误
引起:com.mongodb.MongoCursorNotFoundException:查询失败 错误代码-5和错误消息'未找到光标26041128255 server localhost:27017'在服务器localhost:27017
我怀疑它花了太长时间,10分钟后,它抛出了这个异常。
这里的代码:
usedKeyRepository.findAll()
.buffer(4096).parallel()
.concatMap(listUsedKey -> generatedKeyRepository.bulkFindGeneratedKeysByPub(listUsedKey.stream().map(u -> u.getPub()).collect(Collectors.toSet())))
.subscribe(clefsTrouvees -> recordMatches(clefsTrouvees),
ex -> LOG.error("my exception", ex)
);
private void recordMatches(GeneratedKey clefGeneree) {
LOG.warn("clef : priv:{}\tpub:{}", clefGeneree.getPriv(), clefGeneree.getPub());
}
usedKeyRepository.findAll()方法是
@Autowired
private ReactiveMongoTemplate template;
public Flux<UsedKey> findAll() {
return template.findAll(UsedKey.class);
}
public Flux<GeneratedKey> bulkFindGeneratedKeysByPub(final Collection<String> pub) {
Query query = new Query(Criteria.where("pub").in(pub));
return template.find(query, GeneratedKey.class);
}
我的集合usedKey包含8百万个doc,generatedkey包含6.5亿个。 有任何想法吗 ? : - /