有没有人遇到过10Gen支持的c#驱动程序的问题

时间:2010-12-27 17:53:55

标签: c# mongodb mongodb-.net-driver

我看到了很多这些错误

“远程主机强行关闭现有连接”

自从我从开源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 个答案:

答案 0 :(得分:3)

跟进:谷歌的mongodb用户组也提出了这个问题,大部分讨论都发生在那里。最后,我们发现特定查询导致mongo服务器崩溃(该错误已在当前版本的服务器中修复),而C#驱动程序只是报告导致的连接失败。这不是C#驱动程序中的错误,并且驱动程序无需修复。一旦服务器恢复,C#驱动程序就会重新连接。

答案 1 :(得分:1)

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

如果你知道mongo vue这个工具在mongovue重启时也无法连接到mongodb。

希望这有助于您的解决问题。