我一直在使用GitHub上的C#驱动程序来玩MongoDB(它的速度惊人)。 在我testing的小型单线程控制台应用程序中,一切正常。 我能够在8秒内添加100万个文件(是的,百万)运行单线程。 如果我使用for循环范围之外的连接,我只会得到这个性能。 换句话说,我保持每个插入连接而不是连接每个插入。 显然这是人为的。 我以为我会对它进行一番调查,看看它是如何与多个线程一起工作的。 我这样做是因为我需要模拟一个有多个并发请求的网站。 我正在旋转15到50个线程,在所有情况下总共插入了15万个文件。 如果我只是让线程运行,每个插入操作创build一个新的连接,性能就会停下来。 显然,我需要find一种方法来共享,locking或合并连接。 这就是问题所在。 连接到MongoDB的最佳做法是什么? 连接应该在应用程序的整个生命周期内保持打开状态(每个操作的TCP连接都有大量的延迟打开和closures)? 有没有人有任何真实的世界或MongoDB生产经验,特别是底层的连接? 这是我的线程示例使用一个静态连接,被locking插入操作。 请提供build议,以最大限度地提高networking环境中的性能和可靠性! private static Mongo _mongo; private static void RunMongoThreaded() { _mongo = new Mongo(); _mongo.Connect(); var threadFinishEvents = new List<EventWaitHandle>(); for(var i = 0; i < 50; i++) { var threadFinish = new EventWaitHandle(false, EventResetMode.ManualReset); threadFinishEvents.Add(threadFinish); var thread = […]