mirror of
https://github.com/empayre/fleet.git
synced 2024-11-06 08:55:24 +00:00
Add support for conn_max_lifetime (#2270)
This adds support to configure MySQL conn_max_lifetime.
This commit is contained in:
parent
cf4d8ecfee
commit
2ad5205a4b
@ -254,6 +254,19 @@ Maximum idle connections to database. This value should be equal to or less than
|
||||
max_idle_conns: 50
|
||||
```
|
||||
|
||||
##### `conn_max_lifetime`
|
||||
|
||||
Maximum amount of time, in seconds, a connection may be reused.
|
||||
|
||||
- Default value: 0 (Unlimited)
|
||||
- Environment variable: `KOLIDE_MYSQL_CONN_MAX_LIFETIME`
|
||||
- Config file format:
|
||||
|
||||
```
|
||||
mysql:
|
||||
conn_max_lifetime: 50
|
||||
```
|
||||
|
||||
#### Redis
|
||||
|
||||
##### `redis_address`
|
||||
|
@ -17,18 +17,19 @@ const (
|
||||
|
||||
// MysqlConfig defines configs related to MySQL
|
||||
type MysqlConfig struct {
|
||||
Protocol string
|
||||
Address string
|
||||
Username string
|
||||
Password string
|
||||
Database string
|
||||
TLSCert string `yaml:"tls_cert"`
|
||||
TLSKey string `yaml:"tls_key"`
|
||||
TLSCA string `yaml:"tls_ca"`
|
||||
TLSServerName string `yaml:"tls_server_name"`
|
||||
TLSConfig string `yaml:"tls_config"` //tls=customValue in DSN
|
||||
MaxOpenConns int `yaml:"max_open_conns"`
|
||||
MaxIdleConns int `yaml:"max_idle_conns"`
|
||||
Protocol string
|
||||
Address string
|
||||
Username string
|
||||
Password string
|
||||
Database string
|
||||
TLSCert string `yaml:"tls_cert"`
|
||||
TLSKey string `yaml:"tls_key"`
|
||||
TLSCA string `yaml:"tls_ca"`
|
||||
TLSServerName string `yaml:"tls_server_name"`
|
||||
TLSConfig string `yaml:"tls_config"` //tls=customValue in DSN
|
||||
MaxOpenConns int `yaml:"max_open_conns"`
|
||||
MaxIdleConns int `yaml:"max_idle_conns"`
|
||||
ConnMaxLifetime int `yaml:"conn_max_lifetime"`
|
||||
}
|
||||
|
||||
// RedisConfig defines configs related to Redis
|
||||
@ -160,6 +161,7 @@ func (man Manager) addConfigs() {
|
||||
"MySQL TLS config value. Use skip-verify, true, false or custom key.")
|
||||
man.addConfigInt("mysql.max_open_conns", 50, "MySQL maximum open connection handles.")
|
||||
man.addConfigInt("mysql.max_idle_conns", 50, "MySQL maximum idle connection handles.")
|
||||
man.addConfigInt("mysql.conn_max_lifetime", 0, "MySQL maximum amount of time a connection may be reused.")
|
||||
|
||||
// Redis
|
||||
man.addConfigString("redis.address", "localhost:6379",
|
||||
@ -262,18 +264,19 @@ func (man Manager) LoadConfig() KolideConfig {
|
||||
|
||||
return KolideConfig{
|
||||
Mysql: MysqlConfig{
|
||||
Protocol: man.getConfigString("mysql.protocol"),
|
||||
Address: man.getConfigString("mysql.address"),
|
||||
Username: man.getConfigString("mysql.username"),
|
||||
Password: man.getConfigString("mysql.password"),
|
||||
Database: man.getConfigString("mysql.database"),
|
||||
TLSCert: man.getConfigString("mysql.tls_cert"),
|
||||
TLSKey: man.getConfigString("mysql.tls_key"),
|
||||
TLSCA: man.getConfigString("mysql.tls_ca"),
|
||||
TLSServerName: man.getConfigString("mysql.tls_server_name"),
|
||||
TLSConfig: man.getConfigString("mysql.tls_config"),
|
||||
MaxOpenConns: man.getConfigInt("mysql.max_open_conns"),
|
||||
MaxIdleConns: man.getConfigInt("mysql.max_idle_conns"),
|
||||
Protocol: man.getConfigString("mysql.protocol"),
|
||||
Address: man.getConfigString("mysql.address"),
|
||||
Username: man.getConfigString("mysql.username"),
|
||||
Password: man.getConfigString("mysql.password"),
|
||||
Database: man.getConfigString("mysql.database"),
|
||||
TLSCert: man.getConfigString("mysql.tls_cert"),
|
||||
TLSKey: man.getConfigString("mysql.tls_key"),
|
||||
TLSCA: man.getConfigString("mysql.tls_ca"),
|
||||
TLSServerName: man.getConfigString("mysql.tls_server_name"),
|
||||
TLSConfig: man.getConfigString("mysql.tls_config"),
|
||||
MaxOpenConns: man.getConfigInt("mysql.max_open_conns"),
|
||||
MaxIdleConns: man.getConfigInt("mysql.max_idle_conns"),
|
||||
ConnMaxLifetime: man.getConfigInt("mysql.conn_max_lifetime"),
|
||||
},
|
||||
Redis: RedisConfig{
|
||||
Address: man.getConfigString("redis.address"),
|
||||
|
@ -117,6 +117,7 @@ func New(config config.MysqlConfig, c clock.Clock, opts ...DBOption) (*Datastore
|
||||
|
||||
db.SetMaxIdleConns(config.MaxIdleConns)
|
||||
db.SetMaxOpenConns(config.MaxOpenConns)
|
||||
db.SetConnMaxLifetime(time.Second * time.Duration(config.ConnMaxLifetime))
|
||||
|
||||
var dbError error
|
||||
for attempt := 0; attempt < options.maxAttempts; attempt++ {
|
||||
|
Loading…
Reference in New Issue
Block a user