Назад | Перейти на главную страницу

Пул соединений Tomcat открывает только 20 соединений с mysql

У меня есть приложение Java со следующей строкой в ​​context.xml

<Resource 
    driverClassName="com.mysql.jdbc.Driver" 
    maxActive="100" 
    maxIdle="30" 
    initialSize="10" 
    maxWait="7000" 
    name="jdbc/app" 
    password="pass" 
    type="javax.sql.DataSource" 
    url="jdbc:mysql://dbhost:3306/dbname?autoReconnect=true" 
    username="user" 
    validationQuery="SELECT 1" 
    removeAbandoned="true" 
    removeAbandonedTimeout="30" 
    logAbandoned="true" 
/>

В mysql 'show variables' сообщает мне, что max_connections равно 151.

По-прежнему,

use information_schema;
select count(*) from processlist where User = 'user';

никогда не показывает мне больше 20 подключений. На catalina.out -log кота я получаю

Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool exhausted
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:103)
        at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
        at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)

Что мне нужно проверить, чтобы найти проблему?

И проверьте, правильно ли приложение закрывает соединения, это то, что должны делать программисты, но все же распространенная ошибка.

Также проверьте переменную MySQL max_user_connections.

Я не уверен, что это проблема Tomcat, проверьте, не ограничивает ли MySQL количество подключений.