在做开发的时候,一直在思考一个问题,就是 gorm 的连接池配置,怎么配置比较好?
查阅了一些资料,
比如鸟窝的这篇:
https://colobu.com/2020/05/18/configuring-sql-DB-for-better-performance-2020/还有 go-zero 的这篇:
https://juejin.cn/post/7111500846575124488得到的一些信息是:
1 、根据经验,你应该显式的设置 MaxOpenConns 值。这个值应该远远低于数据库或者基础设施对连接数的任何硬限制。/2 、通常,更大的 MaxOpenConns 和 MaxIdleConns 可能会带来更好的性能。但是回报正在减少。你需要知道,一个大的连接池(一些连接根本就没有重用却被重新创建)可能会减少性能。
3 、为了降低第二点的风险,你可能需要设置一个相对短的 ConnMaxLifetime ,但是太对会导致连接被 kill 并被创建
4 、MaxIdleConns 应该小于等于 MaxOpenConns
结合这两篇文章,我设置的这几个参数的配置信息是:
max_idle_conns: 64
max_open_conns: 64
conn_max_lifetime: 5 (单位:分)
现在有点好奇,怎么判断这几个配置参数是否合适,我理解是
max_idle_conns 和 max_open_conns 参数应该是越大越好,直到增加的量级达到临界值导致池中的连接存在浪费的情况,怎么找到这个合适的值呢?需要通过什么指标来观察和调整?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/946036
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.