【问题标题】:Too many database connection objects - sql server数据库连接对象太多 - sql server
【发布时间】:2017-03-01 20:56:50
【问题描述】:

我的应用程序基于 java 构建并使用 sql server 数据库。

大约有 50 人在使用该应用程序。但是我在数据库中最多有 900 个连接对象,并且数据库在高峰时间会下降。如何有效地使用连接对象并控制连接数量。

【问题讨论】:

  • 默认情况下它将使用池连接对象。检查你的
  • 听起来你没有关闭连接。仔细检查您的代码,使用连接池,并确保在完成一个工作单元后立即调用Connection.close()
  • 我们有一个池管理器来创建连接并保存它们。每完成一个工作单元,我们就会返回池中。
  • 滚动你自己的连接池是个坏主意。听起来你那里有一个错误。

标签: sql sql-server jdbc connection


【解决方案1】:

以下是控制数据库连接的要点。

  1. 检查代码是否正在创建每个连接 使用后销毁。例如。在每个数据库事务中都应该在下面 模式,如果您使用一些 ORM,请确保您正在打开并且 根据 ORM 提供者的建议关闭连接。

    openDBConnection();
    Try{
    PerformDBTransaction();
    }Finally
    {CloseDBConnection();}
    
  2. 检查您是否启用了连接池。如果是,则检查 连接字符串或 ORM 中的最小 Connections 属性 配置,因为每当在 SQL 上完成单个事务时 服务器,它创建与提到的相同数量的连接 在最低 Connections 属性中,因此可能在您的应用程序中 900 提到了连接。

  3. 如果您的应用程序是 Web 应用程序或与 Web 服务通信 然后检查您是否启用了网络园艺(多进程 在同一服务器上处理 Web 请求)或 Web Farming(多个 服务器通过使用负载平衡来处理请求)。如果 一个或两个存在然后被告知以下是公式 为 SQL Server 创建连接。汇集总数 连接数 = 进程总数(Web Gardening Number)* Web/App 服务器总数(Web Farming 数量)* Min 连接字符串中的连接参数值。

为了有效使用:

连接池已经是使用连接的一种有效方式,但连接池的价值取决于您的要求和数据库服务器硬件功能。如果您确定在一个单位时间内只有 50 个用户会执行一个事务,那么您只需配置连接池,以便只能创建 50 个连接。

【讨论】:

    猜你喜欢
    • 2015-12-15
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 2018-06-09
    • 2019-12-27
    • 2013-07-08
    • 2016-11-03
    相关资源
    最近更新 更多