Websphere 连接池的大小如何影响可以服务的并行请求

Websphere 连接池的大小如何影响可以服务的并行请求,websphere,connection-pooling,Websphere,Connection Pooling,在WAS中,当我创建数据源时,我可以编辑连接池属性(#个活动连接,最大#个活动连接)。现在如果我说max=20,如果1000个用户请求进入WAS,每个请求都在自己的线程中运行,每个线程都需要一个连接,那么本质上我会减少到20个并行线程 是这样吗?因为连接对象不能在线程之间共享 我问这个问题是因为大多数时候,我看到这个参数的最大值是20-30,而同时请求服务器的峰值显然超过了1000。似乎我们一次只能处理20个请求?不太可能。连接池负责通过在数据库访问中重用连接来消除创建和关闭连接的开销 如果您有

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

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


我问这个问题是因为大多数时候,我看到这个参数的最大值是20-30,而同时请求服务器的峰值显然超过了1000。似乎我们一次只能处理20个请求?

不太可能。连接池负责通过在数据库访问中重用连接来消除创建和关闭连接的开销

如果您有1000个请求,并且maxSize池为20,那么将并行执行20个数据库访问,并且一旦每个请求释放数据库访问,相同的连接将被重用以处理另一个请求。这是假设数据库访问将在一段有限的时间内进行(短期操作),并且一旦数据被获取/插入/更新,连接将被释放用于另一个请求

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

您可以调整这些值以获得最大值,也可以考虑其他替代方案,以避免使用重复查询(如对所有请求总是相同的选择),使用诸如数据库缓存(即,开放式TrasaCa)之类的技术。 希望这有帮助