websphere如何通过数据源为多个请求管理连接池



我有一个spring rest api,它托管在websphere application server 8.5上。哪个使用数据源连接到数据库并存储值该api处理大约10000个并发请求。我真正想知道的是,如果最大连接被设置为10。连接池是如何连接到数据库的,以及它实际创建了多少个会话来实现多达10000个并发请求的负载。

连接池中的连接由WebContainer线程共享。连接池的最大大小限制了将向数据库打开的连接的数量。通常,当线程完成时,连接将返回到池中。如果将应用程序中的连接设置为非共享,则可以更快地返回连接池(然而,由于一些事务原因,不这样做,因此您必须使用true和false设置来测试应用程序,参见https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/cdat_conshrnon.html)。

应用服务器可以处理的并发请求的数量取决于(a) WebContainer线程池的大小;(b)连接池中可用连接的数量;(c)运行应用程序的jvm数量;(d)数据库处理请求所需的时间;(e)应用程序代码所做的其他事情。

没有一个单一的数字适用于每个应用程序,但一般的经验法则是有一个比连接池更大的WebContainer线程池。如果请求处理得很快,那么可以处理更多的并发请求。同样,如果请求处理缓慢,那么并发请求的数量就会减少。参见https://publib.boulder.ibm.com/httpserv/cookbook/WebSphere_Application_Server-WAS_Traditional-Thread_Pools.html和https://publib.boulder.ibm.com/httpserv/cookbook/WebSphere_Application_Server-WAS_Traditional-Java_Database_Connectivity_JDBC.html

可以使用https://www.ibm.com/developerworks/websphere/library/techarticles/0304_polozoff/polozoff.html和https://www-01.ibm.com/software/webservers/appserv/was/performance.html中概述的技术监视JVM。

我喜欢做的是调整单个JVM的大小以获得最佳性能(例如,任何应用程序都会遇到瓶颈,限制单个JVM可以处理多少并发请求),然后横向扩展(用于故障转移),然后纵向扩展,直到我达到并发请求数量的服务水平协议(SLA)。您可能还需要查看应用程序中的非功能需求(Non - Functional Requirements, nfr),以处理任何性能方面的问题。

如果您有任何问题,请告诉我。

最新更新