在对一个grpc服务压力测试过程中发现 , 进程出现 mysql 连接不上的日志. 后来进入数据库中查看发现mysql 线程数已经占满 ,show processlist ,
解决办法:
设置 gorm 空闲连接数,和最大连接数量.
db, e := NewDb(option.Driver, option.Dsn)
if option.MaxIdles > 0 {
db.DB().SetMaxIdleConns(option.MaxIdles)
}
if option.MaxOpens > 0 {
db.DB().SetMaxOpenConns(option.MaxOpens)
}
具体设置可以根据mysql 配置 , 服务数量, sql 查询耗时, 每秒sql执行次数来确定.
一般最大连接数量 30就可以满足一个docker容器, 启动10个容器 所消耗的连接数就是 30*10.