我们在生产服务器上看到这个令人费解的问题,其中MongoDB偶尔无法查询 writeConcern 刚刚告诉我们记录已写入数据库的记录。
服务器上安装了以下版本:
在使用 writeConcern 1 启动struct Animal {
Animal(int legs = 4) : legs{legs} {}
int legs;
};
struct Ant : Animal {
Ant(int size = 0) : Animal{6}, size(size) {}
Ant(std::string s) : Ant(0) {}
int size;
};
struct Spider : Animal {
Spider(int size = 0) : Animal{8}, size{size} {}
Spider(std::string s) : Spider(0) {}
int size;
};
操作后,原因会立即在回调中查询记录。
在我们的开发服务器上,100%的时间可以正常运行。但是,在我们的生产服务器上,每天大约有10,000个查询,我们观察到第二个查询在大约0.01%的情况下返回零文档。
有趣的是,实际上有文件应该返回,并且在500毫秒之后触发完全相同的查询时会返回文件 do 。显然,我们不希望为所有响应添加500毫秒的延迟
以下是我上面解释的简化说明:
bulk
考虑到writeConcern是专门针对这样的情况而设的,是什么导致在少数情况下失败?
请注意,有一个mongodb实例正在运行。没有集群或分片。