连接池的大小如何影响可以提供的并行请求

时间:2013-08-02 18:16:24

标签: websphere connection-pooling

在WAS中,当我创建数据源时,我可以编辑连接池属性(活动连接数,最大活动连接数)。现在,如果我说max = 20,并且如果1000个用户请求进入WAS并且每个请求在其自己的线程中运行并且每个线程想要连接,实质上我减少到20个并行线程。

这是对的吗?因为线程之间不能共享连接对象。

我问这个问题,因为大多数情况下,我看到这个参数的最大值是20 - 30,显然对服务器的同时请求的峰值#超过一千。看来我们一次只能处理20个请求吗?

1 个答案:

答案 0 :(得分:0)

不是真的。连接池负责通过在数据库访问时重用它们来消除创建和关闭连接的开销。

如果您有一千个请求,并且maxSize池为20,则将并行执行20个数据库访问,并且每个请求释放数据库访问权限后,将重复使用相同的连接来参加另一个请求。这假设数据库访问将在有限的时间段内进行(短操作),并且一旦获取/插入/更新数据,就会释放连接以用于另一个请求。

另一方面,由于池完全正在使用而无法检索数据库连接的请求(比方说,第21个请求)将处于等待状态,直到某个连接被释放,因此它是一个透明的条件客户方。所有这一切都假设代码以有效的方式请求和释放池中的连接。请求的超时也是池的可配置属性

您可以调整这些值以充分利用它们,并且您还可以考虑使用数据库缓存等技术来避免耗尽重复查询池(例如对所有请求始终使用相同的选项)的其他替代方法(即,开放的terracota)。

希望这有帮助!