【问题标题】:C# / MongoDB : How do I keep a connection alive?C# / MongoDB:如何保持连接有效?
【发布时间】:2014-10-09 16:05:23
【问题描述】:

我正在编写一个访问远程 MongoDB 的 C# 应用程序。在查询数据库时如何保持连接?我应该实施某种打开/关闭机制吗?或者连接一次并超时会更好吗?我正在使用官方的 MongoDB / C# 驱动程序。

【问题讨论】:

    标签: c# .net mongodb visual-studio database


    【解决方案1】:

    MongoDB C# 驱动程序在底层维护一个连接池,这在 .NET 中是相当典型的。该池通过为您维护许多打开的连接来工作。当您需要连接时,池将为您提供现有连接(前提是可用)。

    要避免的问题是连接中的泄漏——如果连接被打开而不是再次关闭,那么您将破坏连接池的收益,并且每次都需要打开一个额外的连接。此外,如果存在连接泄漏,它可能会消耗您的客户端和服务器上的额外资源。

    【讨论】:

    • 您好,谢谢您的回答,只有一个问题:当您不关闭连接时会发生什么?它们最终会超时吗?
    • 如果连接保持打开状态并且从未被垃圾回收,那么它将在后台保持空闲状态并且永远不会被释放。很多时候你会很幸运,你没有明确关闭的连接会被清理——但是在你被泄漏烧了几次之后,你会更加小心以确保事情被关闭、处理和垃圾收集。到目前为止,延迟对象是 .NET 中资源泄漏的最常见原因
    • 简而言之:usingtry/catch/finally 是你的朋友
    • 我知道这是一个老问题,但我在驱动程序中看不到任何使用 IDisposable 的地方,那么我将如何关闭连接@STW?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多