有人遇到过10Gen支持的C#驱动程序的问题吗?

4

自从我从开源C#驱动程序切换到10Gen支持的驱动程序后,我在Mongo日志中看到了大量这些错误:

"远程主机强制关闭了一个现有的连接"

一旦出现此错误,我的网站就会变得无响应。我有种感觉,这与连接池实现的方式有关。请参见下面的日志,我正在从集合中删除索引,删除所有项,然后通过添加我想要的所有行并重新索引集合来“重新创建”集合。在完成所有这些操作几分钟后,我总是会收到错误消息:“远程主机强制关闭了一个现有的连接”。

[conn46] run command admin.$cmd { ismaster: 1 }
[conn46] query admin.$cmd ntoreturn:1 command: { ismaster: 1 } reslen:64 0ms
[conn46] query BtSearchCache.system.indexes reslen:1407 nreturned:7 0ms

drop indexes
[conn46] run command BtSearchCache.$cmd { deleteIndexes: "Board_41", index: "ix_QuickSearch" }
[conn46] CMD: dropIndexes BtSearchCache.Board_41
[conn46] dropIndexes: ix_QuickSearch not found
[conn46] query BtSearchCache.$cmd ntoreturn:1 command: { deleteIndexes: "Board_41", index: "ix_QuickSearch" } reslen:81 1ms

remove all data from collection
[conn46] remove  query: {} 1428ms

insert data (thousands of rows, omitted here)

[conn46] insert BtSearchCache.Board_41 0ms
[conn46] insert BtSearchCache.Board_41 0ms
[conn46] insert BtSearchCache.Board_41 1ms
[conn46] insert BtSearchCache.Board_41 0ms
[conn46] insert BtSearchCache.system.indexes 0ms

create indexes
[conn46] run command admin.$cmd { getlasterror: 1 }
[conn46] query admin.$cmd ntoreturn:1 command: { getlasterror: 1 } reslen:65 0ms

ERROR a few minutes later
[conn46] MessagingPort recv() errno:10054 An existing connection was forcibly closed by the remote host. 192.168.100.216:51111
[conn46] SocketException: 9001 socket exception
[conn46] end connection 192.168.100.216:51111
2个回答

3

跟进:这个问题也在Google的mongodb-user组中被问到,大部分讨论都在那里进行。最终我们发现一个特定的查询导致mongo服务器崩溃(该bug已经在当前版本的服务器中修复),而C#驱动程序只是报告了由此导致的连接失败。这不是C#驱动程序的bug,驱动程序不需要修复。一旦服务器重新启动,C#驱动程序就会重新连接。


驱动程序允许我们使用$or查询进行查询,结果发现MongoDB服务器在处理$or查询时存在内存分配错误,因此驱动程序似乎无缘无故地断开连接,但实际上是由于内存分配问题导致MongoDB重新启动。 - Tom DeMille

1

我不知道为什么,但我知道你需要重新启动应用程序才能解决这个问题。每次重新启动mongodb时都会出现此错误。因此,在每次重新启动mongo db后,您需要重新启动应用程序(我想您正在使用iis)。

如果您了解mongo vue这个工具,当mongovue重新启动时,它也无法连接到mongodb。

希望这可以帮助您解决问题。


对我们来说,即使Mongo没有重新启动,这也会发生。我们从不重新启动Mongo,除非由于某些原因需要重新启动DB服务器,否则它可能运行多个月而无需重新启动。 - Tom DeMille
MongoDB自己重启了吗?无论如何,我认为重新启动IIS应该解决连接问题。 - Andrew Orsich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接