当前位置: 首页 > 知识库问答 >
问题:

tomcat jdbc池最大活动不工作?

刘俊语
2023-03-14

我在应用程序中使用spring jdbc模板。。并在tomcat中部署它。。我想在tomcat jdbc中使用连接池。我的连接配置是

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3310/mydb" /> 
    <property name="username" value="***" /> 
    <property name="password" value="***" /> 
    <property name="maxWait" value="10000" />
    <property name="removeAbandonedTimeout" value="60" />
    <property name="removeAbandoned" value="true" />
    <property name="logAbandoned" value="false" />
    <property name="initialSize" value="10" /> 
    <property name="maxActive" value="100" /> 
    <property name="minIdle" value="10" /> 
</bean> 

我不知道怎么做,但当我运行一些测试,并检查mysql中的最大线程时,它表明活动线程比配置中配置的最大活动线程多。那么,为什么配置中的maxActive不工作?如何使其工作?例如,maxActive是100,但当我签入mysql时,活动线程比maxActive多。

共有2个答案

殳智志
2023-03-14

我和你有同样的问题,我的雄猫版本是雄猫9。

这是我的解决方案:您应该设置maxTotal值100,而不是maxActive。

maxTotal:池中数据库连接的最大数量。确保您配置的mysqld max\u连接足够大,可以处理所有db连接。设置为-1表示无限制。

来自http://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html.

端木高邈
2023-03-14

maxActive(int)可同时从此池分配的最大活动连接数。默认值为100

maxIdle(int)始终应保留在池中的最大连接数。默认值为maxActive:定期检查100个空闲连接(如果启用),并且将释放空闲时间超过minEvictableIdleTimeMillis的连接。(另请参阅testWhileIdle)

因此,我建议您也使用maxIdle,例如:

<property name="maxIdle" value="100">

但是也许有一个问题,如果你能显示你的连接管理的代码,那将是有帮助的。

下面是与Spring的声明性和编程事务管理的连接问题的有趣链接:Spring和编程事务管理的连接池问题

 类似资料:
  • 当我们用来谈论核心池大小和最大池大小之间的区别到底是什么? 可以借助示例来解释吗?

  • 当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?

  • 单击按钮转到另一个活动,然后返回到原始活动。 我试图保存两个整数离开活动的另一个活动,然后稍后当我返回到原来的活动,我得到一个null包。 有人知道为什么这不起作用吗? 我使用savedInstanceState bundle在屏幕旋转时保存变量,它在这种情况下工作,但是当我离开查看另一个活动并稍后返回此活动时,该bundle没有保存。返回时获取空值。 onSavedInstanceState方法

  • GraphRequest请求=GraphRequest。newGraphPathRequest(AccessToken.getCurrentAccessToken(),“/我/朋友”,new GraphRequest。Callback(){@Override public void onCompleted(GraphResponse response){//在此处插入代码 } 这是我的男拳。xml

  • 在OkHttp中,我找不到设置硬最大连接池大小的方法。从留档https://square.github.io/okhttp/3.x/okhttp/okhttp3/ConnectionPool.html很明显,您可以设置最大空闲连接,但不能设置整体最大值。这意味着在高负载下,它可以增长超过任何限制。 有没有办法最大化池?如果没有,为什么没有?

  • 我有一个活动,我们称之为FirstActivity.java,它有一个带有通过片段实例化的导航抽屉的actionBar。在这个片段NavigationDrawerFragment.java中,为了实例化ActionBar,我将方法onCreateOptionsMenu(菜单菜单,MenuInflater inflater)、onOptionsItemSelected(MenuItem项)和onPr