连接池大小与并发请求数

时间:2011-07-13 18:14:32

标签: java web-services glassfish scalability

我必须开发一个高度可扩展的Web服务,但连接池大小(Oracle DB)设置为50。

具有此大小意味着所服务的并发请求数将最多为50,否则没有新连接可用吗?

但是,通过配置,Weblogic或Glassfish服务器可以同时接受超过50个请求吗?

我读到服务器接受了“排队”的请求,直到线程正在处理它们。

关于'可扩展性'我也有一个问号,因为平均数据库调用需要1,2秒。 +肥皂开销...... ==>每次通话时响应时间为2,3秒。

我可以估算服务器支持的并发用户数(Weblogic或Glasfish 4gb)吗?

谢谢

2 个答案:

答案 0 :(得分:3)

池中最多有50个连接并不意味着您一次只能处理50个用户。每个页面请求都应该生成可以相互交错的查询:因此,虽然任何时候只能运行50个查询,但应该能够处理更多的页面请求。这可以通过确保您只在短时间内连接到数据库来帮助。

连接池的使用主要是为了避免一直设置新连接的成本(加上准备好的语句被缓存等),因此目的是尽可能频繁地重用它们。

当你说平均数据库调用需要1.2秒时:如果这个单一查询我想你要查看查询或表索引以减少这个时间(否则我担心你会遇到可伸缩性问题,无论如何什么),但如果它是多个查询,那么它们应该非常愉快地与其他请求交错。

关于排队:weblogic将对查询进行排队,但您可以设置超时,以便在设定的时间后返回未完成的查询。然后,您可以决定再次尝试或告诉用户系统正忙,也许稍后再试。

答案 1 :(得分:0)

在谈论Web服务时,需要在连接池和并发请求之间保持最佳平衡。有关概念,请参阅:https://dzone.com/articles/optimum-database-connection-pool-size