美文网首页
数据库连接池突增(指数)

数据库连接池突增(指数)

作者: 想太多的猫 | 来源:发表于2017-12-11 11:25 被阅读58次

    现象

    今日,数据库服务器连接数出现突然激增?导致有些应用拿不到数据库链接,数据库各种DML和DDL大面积超时,而各个web应用对应同一个数据库(微服务不拆封数据库就是坑),每个应用的数据库连接池最大连接数总和远远大于数据库服务器的max_connections(连接池总数设置不合理)。

    • 数据库服务器
      1. SQL语句层面:DML语句在某个时刻出现指数级增长,DDL语句出现大面积超时(大部分语句的open-table特别慢)。
      2. 操作系统层面:IO压力很大,计算压力基本没有。

    分析

    • IO对于数据库而言就是读写磁盘压力变大,而数据库的操作来源与SQL语句。DML语句和DDL语句可能都会让数据库Server进行IO的操作。
    • DML语句一般会进行数据的落盘操作,这里就会引起数据的IO,而数据库DML的突然增加会增大数据库服务器的IO,从而出现IO被拉高。
    • 对于DDL语句,一般会进行相关缓存,不会太多的IO操作,我们发现很多DDL语句的open-table操作很慢。因为DML语句占据了大量IO,而DDL的open-table操作会进行IO。那么,自然会很慢。

    方案

    • 将突增的DML语句进行分散,以降低数据库IO的负载。
    • 优化DDL语句的open-table参数设置。在Mysql中table_open_cache参数就是用来设置对DDL语句对打开表的缓存。对于table_open_cache = max_connections * N ( the count of tables ) / 0.85

    相关文章

      网友评论

          本文标题:数据库连接池突增(指数)

          本文链接:https://www.haomeiwen.com/subject/ugfiixtx.html