1

我正在使用单个独立的 Mongo DB 服务器,没有复制或分片等特殊拓扑。目前我有一个问题,即 mongo DB 不支持超过 500 个并行请求。请注意,我只使用了一个 MongoClient 实例,其余线程用于插入。我正在使用 java 执行器框架来创建线程,这些线程用于将数据插入到集合中 [所有插入到同一个集合中]

4

1 回答 1

2

在向数据库发出请求之前,您应该对请求进行排队。从你的数据库中并行请求 500 个东西是没有用的。请记住,单个请求会带来一些内存成本、锁定成本等等。实际上,您一次过多地询问数据库是在浪费资源 - 请记住,我的意思是这个请求明智而不是数据明智。

所以使用一个队列(或更多)并汇集请求。从该池中,您可以提供您的工作线程(假设 5 或 10 个就足够了),就是这样。

看一下java的concurrent包中的Future接口。在这里使用异步处理看起来具有最高吞吐量和最低资源影响。

但首先检查 MongoDB 驱动程序。如果他们已经以这种方式实施它,我不会感到惊讶。如果是这种情况,您只需要通过使用队列来限制自己,让数据库驱动程序一次只能处理 10 或 100 个请求。做一些性能检查来调整发送到数据库的实际请求的数量。

于 2013-10-07T06:24:50.143 回答