websphere如何通过datasource管理多个请求的连接池

How websphere manages connection pool through datasource for multiple requests

我有一个 spring rest api 托管在 websphere 应用程序服务器 8.5 上。它使用数据源连接到数据库并存储值 api 处理大约 10000 个并发请求。 我真正想知道的是最大连接数是否设置为 10。连接池如何连接到数据库以及它真正创建了多少个会话以实现最多 10000 个并发请求的负载。

连接池中的连接由 WebContainer 线程共享。连接池最大大小限制了将打开的数据库连接数。通常,当线程完成时,连接会 returned 到池中。如果在应用程序中将连接设置为不共享,则可以更快 return 连接池(但是,由于某些交易原因不这样做,因此您必须使用 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 and 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 and here https://www-01.ibm.com/software/webservers/appserv/was/performance.html

中概述的技术监控 JVM

我喜欢做的是调整单个 JVM 的大小以获得最佳性能(即,您将在任何应用程序中遇到瓶颈,这将限制单个 JVM 可以处理的并发请求数)然后水平扩展(故障转移),然后垂直扩展,直到我达到并发请求数的服务水平协议(SLA)。您可能还需要查看应用程序中的非功能性需求 (NFR) 以解决任何性能方面的问题。

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