gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发
屏幕快照 2019-08-27 下午3.54.15
屏幕快照 2019-08-27 下午3.54.24
然后压测100的并发, 只有5个连接, 是哪里没注意到么
试了下注释掉两个set, 只有两条连接, 感觉SetMaxOpenConns貌似没起到效果
gorm 数据库连接池 设置空闲5最大10, 压测为啥只能达到5, 100并发
屏幕快照 2019-08-27 下午3.54.15
屏幕快照 2019-08-27 下午3.54.24
然后压测100的并发, 只有5个连接, 是哪里没注意到么
试了下注释掉两个set, 只有两条连接, 感觉SetMaxOpenConns貌似没起到效果
7 回答5.3k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答2k 阅读✓ 已解决
1 回答3.4k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
你看到的5和2表示指的应该都是maxidleconn的值.
注释掉只有两个连接是因为gorm默认maxidleconn 是2
不注释掉是5, 可以看下SetMaxOpenConns的实现
当
syncMaxIdle := db.maxOpen > 0 && db.maxIdleConnsLocked() > db.maxOpen
成立的时候, 会把maxidleconn设置成和maxopen一样.maxIdleConnsLocked()返回的值从第一个图看就是maxIdle, 你这里设置的是5 小于maxopen 10, 所以syncMaxIdle为false, 底下的
db.SetMaxIdleConns(n)
, 没有执行, maxidle依旧是5.