【问题标题】:How many database connections I can open in jsp/servlet or in console application?我可以在 jsp/servlet 或控制台应用程序中打开多少个数据库连接?
【发布时间】:2013-10-16 04:09:59
【问题描述】:

我正在为 SMS Gateway 开发软件: - 每天对数据库执行许多选择、插入、更新和删除语句,例如超过一百万次。 - 我在管理数据库连接等资源时遇到了一些困难,所以我不知道在哪里关闭连接以尽量减少创建的连接数。 - 我使用驱动程序管理器。 - 当我保持连接未关闭时,我在 tomcat 中出现内存泄漏。 - 在控制台应用程序中有使用 DAO 的线程并且有静态连接,所以我没有关闭它。

1) 查询完成后不要关闭数据库连接,保持打开状态是个好主意吗?

2) 我运行 servlet 以在 http 连接上接收 SMS 并将它们插入数据库中,我希望这个 servlet 上有数千个 http 连接(可能每分钟),我是否应该关闭并为 servlet 的每个请求创建数据库连接?

3) 在这种情况下,使用 DB Connections 的最佳做法是什么?

【问题讨论】:

  • 投了赞成票,原因不明,因此毫无意义,投反对票。这个问题有一些不好的做法,但问题本身是完全有效的。谢天谢地,他实际上是在问这个问题。

标签: java mysql jsp servlets jdbc


【解决方案1】:

查询完成后不要关闭数据库连接,保持打开状态是个好主意吗?

使用连接池是个好主意,在需要时从它获取连接,然后关闭它以尽快将其释放回池中。

我有线程使用静态连接,如果我关闭连接,其他线程是否有可能出现异常?

当然。这是最坏的做法。不要这样做。见上文。

我有 servlet 正在运行以在 http 连接上接收 SMS 并将它们插入 DB,并且我希望这个 servlet 上有数千个 http 连接(可能每分钟),我应该为 servlet 的每个请求关闭并创建 DB 连接吗?

是的,但通过连接池,见上文。

在这种情况下使用数据库连接的最佳做法是什么?

见上文。

至于你标题中的问题,完全取决于数据库配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多