我可以在 jsp/servlet 或控制台应用程序中打开多少个数据库连接?

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

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

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

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

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

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

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

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

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

见上文。

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

【讨论】:

以上是关于我可以在 jsp/servlet 或控制台应用程序中打开多少个数据库连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JSP / Servlet 中获取用户角色

JSP/Servlet Web 应用程序中的 XSS 预防

jsp+servlet+javaBean+Dao

JSP/Servlet技术—第七章 Servel基础

jsp+Servlet+javabean 出现乱码问题

java 控制器在JSP / Servlet中上传单个文件 - https://ngockhuong.com