Tomcat JDBC连接池使用XtraBackup达到满容量

时间:2014-10-11 18:15:05

标签: mysql tomcat jdbc connection-pooling database-backups

我正在尝试使用XtraBackup在生产数据库上构建托管备份方案。

根据我们的DBA,XtraBackup不会锁定数据库,但会发出一系列SHOW TABLE STATUS命令,然后在文件系统级别上运行。

然而,正如XtraBackup运行我的日志开始爆炸时出现连接池错误:

Error getting database connection:[http-nio-8080-exec-5] Timeout: Pool empty. Unable to fetch a connection in 10 seconds, none available[size:100; busy:100; idle:0; lastwait:10000].

有一些建议说关闭innodb-stats-on-metadata可能会有所帮助,所以我们正在尝试这样做。

同时我想确认我的连接池设置是否正常:

<Resource name="jdbc/mydatabase_master"
          auth="Container"
          type="javax.sql.DataSource"
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
          testWhileIdle="true"
          testOnBorrow="true"
          testOnReturn="false"
          validationQuery="SELECT 1"
          validationInterval="30000"
          timeBetweenEvictionRunsMillis="30000"
          maxActive="100"
          minIdle="10"
          maxWait="10000"
          initialSize="10"
          removeAbandonedTimeout="60"
          removeAbandoned="true"
          minEvictableIdleTimeMillis="30000"
          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;
            org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
          username="db_user"
          password="mypassword"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://my.ip:3306/my_database"
          />

对于除备份之外的所有内容,此配置非常有效。在大多数流量下,连接池大小在initialSize附近徘徊。似乎设置maxActive更高只会在池中生成挂起的新连接。

其他任何东西似乎都可以根据XtraBackup进行调整?

1 个答案:

答案 0 :(得分:0)

在询问之后,看起来问题是XtraBackup在数据库服务器上的压力。虽然XtraBackup并没有在所有InnoDB数据库上使用锁定,但它仍然给系统带来了压力。从文档

  

&#34;虽然innobackupex不会阻止数据库的操作,但任何操作都是如此   备份可以为正在备份的系统添加负载。在那些做的系统上   没有太多的备用I / O容量,它可能有助于节流   innobackupex读取和写入InnoDB数据的速率。你可以做   这与--throttle选项。&#34;

我们最终只是碰到了maxActive,而不是选择此时的限制。当XtraBackup最初运行时,查询足以减慢数据库速度,导致线程池最大化。添加更高级别的maxActive连接允许XtraBackup在不增加连接池的情况下运行。

似乎将innodb-stats-on-metadata转为OFF有助于加快SHOW TABLE STATUS查询速度,进一步降低数据库的压力。

某种特殊情况,但希望如果他们处于相同的情况,这将有助于任何人。

相关问题