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

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

屏幕快照 2019-08-27 下午3.54.15
clipboard.png

屏幕快照 2019-08-27 下午3.54.24
clipboard.png

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

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

阅读 17.2k
2 个回答

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

clipboard.png

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

clipboard.png
syncMaxIdle := db.maxOpen > 0 && db.maxIdleConnsLocked() > db.maxOpen成立的时候, 会把maxidleconn设置成和maxopen一样.
maxIdleConnsLocked()返回的值从第一个图看就是maxIdle, 你这里设置的是5 小于maxopen 10, 所以syncMaxIdle为false, 底下的db.SetMaxIdleConns(n), 没有执行, maxidle依旧是5.

新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏