1 背景最近石墨文档线上业务出现了一些性能问题,在突发流量情况下,有个业务性能急剧下降。在经过一系列的排查过程后,发现该服务到数据库的连接数经常超过MaxIdleConns,因此怀疑是数据库的配置导致的性能问题,所以以下针对数据库的代码进行了剖析,并做了相关实验。Go的MySQL客户端这个操作,就会导致当突发流量情况下,由于请求量级过大,超过了最大空闲连接数的负载,那么新的连接在放入连接池的时候,会被无情的关闭,变成短连接,导致你的服务性能进一步恶化。可以发现确实是tcp的状态统计与MySQL客户端的统计是一致的,并且存在fin包。

MySQL的MaxIdleConns不合理,会变成短连接的原因

MySQL的MaxIdleConns不合理,会变成短连接的原因

MySQL的MaxIdleConns不合理,会变成短连接的原因

MySQL的MaxIdleConns不合理,会变成短连接的原因