MySQL的MaxIdleConns不合理,会变成短连接
1 背景 最近石墨文档线上业务出现了一些性能问题,在突发流量情况下,有个业务性能急剧下降。该服务是依赖于数据库的业务,会批量获取数据库里的数据。在经过一系列的排查过程后,发现该服务到数据库的连接数经常超过MaxIdleConns,因此怀疑是数据库的配置导致的性能问题,所以以下针对数据库的代码进行了剖析,并做了相关实验。 2 配置解读 maxIdleCount int // zero means defaultMaxIdleConns; negative means 0 maxOpen int // <= 0 means unlimited maxLifetime time.Duration // maximum amount of time a connection may be reused maxIdleTime time.Duration // maximum amount of time a connection may be idle before being closed 可以看到以上四个配置,是我们Go MySQL客户端最重要的配置。 maxIdleCount 最大空闲连接数,默认不配置,是2个最大空闲连接 maxOpen 最大连接数,默认不配置,是不限制最大连接数 maxLifetime 连接最大存活时间 maxIdleTime 空闲连接最大存活时间 3 源码解析