Java 连接池的工作原理

Java 连接池的工作原理,java,mysql,spring,Java,Mysql,Spring,我正在开发基于spring的应用程序,其中我管理连接池,以管理MySQL和Java应用程序之间的连接 连接池配置如下所示: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" > <property name="driverClassName" value="${database.driver}" /> <property name="url" va

我正在开发基于spring的应用程序,其中我管理连接池,以管理MySQL和Java应用程序之间的连接

连接池配置如下所示:

<bean id="dataSource"
     class="org.apache.commons.dbcp.BasicDataSource" >
     <property name="driverClassName" value="${database.driver}" />
     <property name="url" value="${database.url}" />
     <property name="username" value="${database.user}" />
     <property name="password" value="${database.password}" />
     <property name="initialSize" value="20" />
     <property name="maxActive" value="100" />
     <property name="maxIdle" value="50" />
     <property name="minIdle" value="10" />
</bean>

现在我的问题是:

1) 我有两个不同的应用程序具有相同的配置,那么mysql将维护多少个连接池,它将为所有maxactive1=100的应用程序提供一个连接池,或者它将基于每个应用程序。在我的例子中,2*100=200(maxactive)

2) 如果我在1秒内有500个请求,那么maxactive的最佳值是什么?

1)MySQL不知道您的连接池。MySQL有自己的最大允许连接选项。并且该数目应该大于所有连接池所需的连接数之和。你的情况是2*100

2) 最佳maxactive值取决于多个因素。每秒500个请求如果处理一个请求,则每秒需要500个连接。但如果请求处理时间为0.1秒,50个连接就足够了