【问题标题】:Has anyone had issues with the 10Gen supported c# driver有没有人对 10Gen 支持的 c# 驱动程序有问题
【发布时间】:2010-12-27 17:53:54
【问题描述】:

我看到很多这样的错误

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

在 Mongo 日志中,因为我从开源 c# 驱动程序切换到支持 10Gen 的驱动程序。一旦发生此错误,我的网站就会变得无响应。我感觉它与连接池的实现方式有关。请参阅下面的日志,我正在从集合中删除索引,删除所有项目,然后通过添加我想要的所有行然后重新索引集合来“重新创建”集合。过了一会儿,我总是收到错误消息:'现有连接被远程主机强行关闭'

[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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 驱动允许我们使用 $or 查询进行查询,结果发现 mongodb 服务器在使用 $or 查询时出现内存分配错误,所以看起来驱动似乎无缘无故断开连接,但实际上是实际上 mongo 由于内存分配而重新启动
    【解决方案2】:

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

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

    希望这能帮助您解决问题。

    【讨论】:

    • 对我们来说,即使 mongo 没有重新启动,这种情况也会发生。我们从不重启 mongo,它可能会运行好几个月而不重启,除非我们出于某种原因需要重启数据库服务器
    • Mb mongo db 自行重启了吗?无论如何,我认为 iis 重启应该可以解决连接问题。
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多