【go】gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发

gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发

屏幕快照 2019-08-27 下午3.54.15
【go】gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发

屏幕快照 2019-08-27 下午3.54.24
【go】gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发

然后压测100的并发, 只有5个连接, 是哪里没注意到么

试了下注释掉两个set, 只有两条连接, 感觉SetMaxOpenConns貌似没起到效果

回答

你看到的5和2表示指的应该都是maxidleconn的值.
注释掉只有两个连接是因为gorm默认maxidleconn 是2

【go】gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发

不注释掉是5, 可以看下SetMaxOpenConns的实现

【go】gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发
syncMaxIdle := db.maxOpen > 0 && db.maxIdleConnsLocked() > db.maxOpen成立的时候, 会把maxidleconn设置成和maxopen一样.
maxIdleConnsLocked()返回的值从第一个图看就是maxIdle, 你这里设置的是5 小于maxopen 10, 所以syncMaxIdle为false, 底下的db.SetMaxIdleConns(n), 没有执行, maxidle依旧是5.

这个问题有解决方法吗,也遇到这个问题了

以上是 【go】gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发 的全部内容, 来源链接: utcz.com/a/107919.html

回到顶部