我有一个spring rest api,它托管在websphere应用服务器8.5上。它使用数据源连接到数据库并存储值 api处理大约10000个并发请求。 如果最大连接数设置为10,我真的想知道。连接池如何连接到数据库以及实际创建多少个会话以实现最多10000个并发请求的加载。
答案 0 :(得分:0)
连接池中的连接由WebContainer线程共享。连接池最大大小限制将打开到数据库的连接数。通常,线程完成后会将连接返回到池中。如果在应用程序中将连接设置为非共享,则可以更快地返回连接池(但是,有一些事务性原因不执行此操作,因此您必须使用true和false设置测试应用程序,请参阅{{3 })。
应用程序服务器可以处理的并发请求数取决于(a)WebContainer线程池的大小和(b)连接池中的可用连接数以及(c)运行应用程序的JVM数量和(d)数据库处理请求所需的时间以及(e)应用程序代码的其他用途。
没有一个数字适用于每个应用程序,但一般的经验法则是拥有比连接池更大的WebContainer线程池。如果请求快速处理,则可以处理大量并发请求。同样,如果请求处理缓慢,则并发请求数会下降。请参阅https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/cdat_conshrnon.html和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
中列出的技术监控JVM我喜欢做的是调整单个JVM的大小以获得最佳性能(即,您将在任何应用程序中遇到瓶颈,这将限制单个JVM可以处理多少并发请求),然后横向扩展(用于故障转移) )然后垂直扩展,直到我达到服务级别协议(SLA)的并发请求数。您可能还需要查看应用程序中的非功能需求(NFR)以解决任何性能方面问题。
如果您有任何后续问题,请告诉我。