我看到了很多这些错误
“远程主机强行关闭现有连接”
自从我从开源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
答案 0 :(得分:3)
跟进:谷歌的mongodb用户组也提出了这个问题,大部分讨论都发生在那里。最后,我们发现特定查询导致mongo服务器崩溃(该错误已在当前版本的服务器中修复),而C#驱动程序只是报告导致的连接失败。这不是C#驱动程序中的错误,并且驱动程序无需修复。一旦服务器恢复,C#驱动程序就会重新连接。
答案 1 :(得分:1)
我不知道为什么会这样,但我知道您需要重新启动应用程序才能解决此问题。当您重新启动mongodb时,总会出现此错误。因此,每次重新启动mongo db后,您需要重新启动应用程序(我想您可以使用iis)。
如果你知道mongo vue这个工具在mongovue重启时也无法连接到mongodb。
希望这有助于您的解决问题。