首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat连接池使用XtraBackup达到最大容量

Tomcat连接池使用XtraBackup达到最大容量
EN

Stack Overflow用户
提问于 2014-10-11 18:15:04
回答 1查看 563关注 0票数 0

我正在尝试用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可能会有所帮助,所以我们正在尝试。

同时,我想确认我的连接池设置是好的:

代码语言:javascript
复制
<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有关而被调整呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-20 13:39:29

询问之后,问题似乎是XtraBackup在数据库服务器上施加的压力。虽然XtraBackup没有对所有的InnoDB数据库使用锁定,但它仍然给系统带来了压力。从文件中

“虽然innobackupex不会阻止数据库的操作,但任何备份都会给正在备份的系统增加负载。在没有足够的I/O能力的系统上,控制innobackupex读取和写入InnoDB数据的速度可能会有所帮助。您可以使用节流选项来实现这一点。”

我们最后只是跳到maxActive,而不是选择节流在此时。当XtraBackup最初运行时,查询就足以减缓数据库的速度,导致线程池达到最大值。添加更高级别的maxActive连接使XtraBackup能够运行,而无需使连接池达到最大值。

关闭innodb-stats-on-metadata似乎也有助于加速SHOW TABLE STATUS查询,从而进一步降低了DB的压力。

这是一种特殊的情况,但希望这对处于同样情况的任何人都有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26317727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档