我必须开发一个高可伸缩性的set服务,但连接池大小(Oracle DB)设置为50。
拥有这个大小意味着服务的并发请求的数量将是最大的50,否则没有新的连接可用,对吗?
但根据配置,Weblogic或Glassfish服务器是否可以同时接受超过50个请求?
我读到服务器接受请求,这些请求被‘排队’,直到一个线程处理它们。
关于“可伸缩性”,我也有一个问号,因为数据库调用的平均时间是1.2秒。+每次调用的响应时间为2秒、3秒的soap overhead...==>。
我可以估计服务器将支持多少并发用户(Weblogic或Glasfish 4 4gb)吗?
谢谢
发布于 2011-07-14 06:33:23
池中最多有50个连接并不意味着您一次只能处理50个用户。每个页面请求都应该生成可以相互交错的查询:因此,尽管一次只能运行50个查询,但应该能够处理更多的页面请求。这可以通过确保你只在短时间内连接到数据库来得到帮助。
使用连接池主要是为了避免总是建立新连接的成本(加上缓存已准备好的语句等),因此其目的是尽可能频繁地重用它们。
当你说平均数据库调用耗时1.2秒时:如果这是一个单一的查询,我认为你应该考虑查询或表索引来减少这一时间(否则我担心你无论如何都会遇到可伸缩性问题),但如果它是多个查询,那么它们应该与其他请求交错。
关于排队: weblogic将查询排队,但您可以设置超时,以便查询在设置的时间后返回未完成。然后,您可以决定重试,或者告诉用户系统正忙,也可以稍后再试。
发布于 2020-04-16 15:06:15
当您谈论web服务时,您需要在连接池和并发请求之间保持最佳平衡。关于这个概念,你可以参考:https://dzone.com/articles/optimum-database-connection-pool-size
https://stackoverflow.com/questions/6683572
复制相似问题