我正在构建一个基于Java的web应用程序(主要是使用Tomcat部署的JSP)。用户数量永远不会超过~30人。这是一个工作日志,因此用户将不断更新/访问数据库(SQL Server)。web应用程序中有许多方法需要连接到数据库。
每次需要连接时,我都会打开一个新的连接(我也会适当地关闭它),但这似乎需要打开/关闭大量的连接。连接池是否适用于这种情况?我试图理解连接池的角色,但我感到困惑;每个用户都会有一个连接池吗?
如果我偏离了轨道(我怀疑我是),那么有没有更好的解决这个问题的方法呢?有什么问题吗?
谢谢!
发布于 2011-05-02 19:48:33
当然,您可以将连接汇集到数据库。通常情况下,每个DB使用一个池(尽管可能有更多的原因)。
你问有没有问题是对的。连接池将减少必须协商的新连接的数量,因此它将减少为请求提供服务所需的时间,并减少服务器上的负载。此外,它还将减少使用的套接字数量,这(对于较大的应用程序)可能是系统性能的一个因素。
但是:您是否有正在尝试解决的性能问题?响应时间可以接受吗?负载是否可接受?平衡你在perf和开发成本上获得的收益。由于存在预先构建的连接池,因此很容易集成一个连接池。但它不是免费的,优化通常应该有特定的目标,而不是“因为我应该”。
发布于 2011-05-02 19:44:50
是的,我会为30个连接设置池的大小,并让它来管理它们。通过这种方式,您将在所有请求上分摊打开连接的成本。
有一个池供许多用户访问以获取连接;每个请求一个连接。
发布于 2011-05-02 19:45:15
连接池用于应用程序(而不是每个用户)。连接池的概念是尽可能多地重用开放的连接,并在绝对需要时打开一个新的连接。从cpu周期和内存的角度来看,打开与数据库的连接是一项开销很大的操作。这就是为什么需要连接池的原因。对于30个用户,我建议使用连接池。
您可以调整池中15到30个连接的大小。
https://stackoverflow.com/questions/5861698
复制