Add PHOTOPRISM_DATABASE_CONNS config parameter

Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
Michael Mayer 2020-05-28 15:37:08 +02:00
parent 02800e796e
commit ed8390906c
4 changed files with 18 additions and 1 deletions

View file

@ -86,6 +86,7 @@ func configAction(ctx *cli.Context) error {
// Database config
fmt.Printf("%-25s %s\n", "database-driver", conf.DatabaseDriver())
fmt.Printf("%-25s %s\n", "database-dsn", conf.DatabaseDsn())
fmt.Printf("%-25s %d\n", "database-conns", conf.DatabaseConns())
// External binaries
fmt.Printf("%-25s %s\n", "sips-bin", conf.SipsBin())

View file

@ -33,6 +33,15 @@ func (c *Config) DatabaseDsn() string {
return c.params.DatabaseDsn
}
// DatabaseConns sets the maximum number of open connections to the database.
func (c *Config) DatabaseConns() int {
if c.params.DatabaseConns > 1024 || c.params.DatabaseConns < 0 {
return 0
}
return c.params.DatabaseConns
}
// Db returns the db connection.
func (c *Config) Db() *gorm.DB {
if c.db == nil {
@ -133,7 +142,7 @@ func (c *Config) connectToDatabase(ctx context.Context) error {
db.LogMode(false)
db.SetLogger(log)
db.DB().SetMaxIdleConns(0)
db.DB().SetMaxOpenConns(256)
db.DB().SetMaxOpenConns(c.DatabaseConns())
c.db = db
return err

View file

@ -243,6 +243,12 @@ var GlobalFlags = []cli.Flag{
Value: "root:@tcp(localhost:2343)/photoprism?parseTime=true",
EnvVar: "PHOTOPRISM_DATABASE_DSN",
},
cli.IntFlag{
Name: "database-conns",
Usage: "maximum `NUMBER` of open connections to the database",
Value: 256,
EnvVar: "PHOTOPRISM_DATABASE_CONNS",
},
cli.BoolFlag{
Name: "detect-nsfw",
Usage: "flag photos as private that may be offensive",

View file

@ -56,6 +56,7 @@ type Params struct {
ResourcesPath string `yaml:"resources-path" flag:"resources-path"`
DatabaseDriver string `yaml:"database-driver" flag:"database-driver"`
DatabaseDsn string `yaml:"database-dsn" flag:"database-dsn"`
DatabaseConns int `yaml:"database-conns" flag:"database-conns"`
TidbServerHost string `yaml:"tidb-host" flag:"tidb-host"`
TidbServerPort uint `yaml:"tidb-port" flag:"tidb-port"`
TidbServerPassword string `yaml:"tidb-password" flag:"tidb-password"`