Add config to enable keepalive/persistent connections
This commit is contained in:
parent
21f500c93e
commit
20edf7a136
3 changed files with 32 additions and 2 deletions
6
dist/helm/chihaya/values.yaml
vendored
6
dist/helm/chihaya/values.yaml
vendored
|
@ -53,6 +53,12 @@ config:
|
||||||
# Disabling this should increase performance/decrease load.
|
# Disabling this should increase performance/decrease load.
|
||||||
enable_request_timing: false
|
enable_request_timing: false
|
||||||
|
|
||||||
|
# When true, persistent connections will be allowed. Generally this is not
|
||||||
|
# useful for a public tracker, but helps performance in some cases (use of
|
||||||
|
# a reverse proxy, or when there are few clients issuing many requests).
|
||||||
|
enable_keepalive: false
|
||||||
|
idle_timeout: 30s
|
||||||
|
|
||||||
# Whether to listen on /announce.php and /scrape.php in addition to their
|
# Whether to listen on /announce.php and /scrape.php in addition to their
|
||||||
# non-.php counterparts.
|
# non-.php counterparts.
|
||||||
# This is an option for compatibility with (very) old clients or otherwise
|
# This is an option for compatibility with (very) old clients or otherwise
|
||||||
|
|
|
@ -36,6 +36,12 @@ chihaya:
|
||||||
read_timeout: 5s
|
read_timeout: 5s
|
||||||
write_timeout: 5s
|
write_timeout: 5s
|
||||||
|
|
||||||
|
# When true, persistent connections will be allowed. Generally this is not
|
||||||
|
# useful for a public tracker, but helps performance in some cases (use of
|
||||||
|
# a reverse proxy, or when there are few clients issuing many requests).
|
||||||
|
enable_keepalive: false
|
||||||
|
idle_timeout: 30s
|
||||||
|
|
||||||
# Whether to time requests.
|
# Whether to time requests.
|
||||||
# Disabling this should increase performance/decrease load.
|
# Disabling this should increase performance/decrease load.
|
||||||
enable_request_timing: false
|
enable_request_timing: false
|
||||||
|
|
|
@ -22,6 +22,8 @@ type Config struct {
|
||||||
Addr string `yaml:"addr"`
|
Addr string `yaml:"addr"`
|
||||||
ReadTimeout time.Duration `yaml:"read_timeout"`
|
ReadTimeout time.Duration `yaml:"read_timeout"`
|
||||||
WriteTimeout time.Duration `yaml:"write_timeout"`
|
WriteTimeout time.Duration `yaml:"write_timeout"`
|
||||||
|
IdleTimeout time.Duration `yaml:"idle_timeout"`
|
||||||
|
EnableKeepAlive bool `yaml:"enable_keepalive"`
|
||||||
TLSCertPath string `yaml:"tls_cert_path"`
|
TLSCertPath string `yaml:"tls_cert_path"`
|
||||||
TLSKeyPath string `yaml:"tls_key_path"`
|
TLSKeyPath string `yaml:"tls_key_path"`
|
||||||
EnableLegacyPHPURLs bool `yaml:"enable_legacy_php_urls"`
|
EnableLegacyPHPURLs bool `yaml:"enable_legacy_php_urls"`
|
||||||
|
@ -35,6 +37,8 @@ func (cfg Config) LogFields() log.Fields {
|
||||||
"addr": cfg.Addr,
|
"addr": cfg.Addr,
|
||||||
"readTimeout": cfg.ReadTimeout,
|
"readTimeout": cfg.ReadTimeout,
|
||||||
"writeTimeout": cfg.WriteTimeout,
|
"writeTimeout": cfg.WriteTimeout,
|
||||||
|
"idleTimeout": cfg.IdleTimeout,
|
||||||
|
"enableKeepAlive": cfg.EnableKeepAlive,
|
||||||
"tlsCertPath": cfg.TLSCertPath,
|
"tlsCertPath": cfg.TLSCertPath,
|
||||||
"tlsKeyPath": cfg.TLSKeyPath,
|
"tlsKeyPath": cfg.TLSKeyPath,
|
||||||
"enableLegacyPHPURLs": cfg.EnableLegacyPHPURLs,
|
"enableLegacyPHPURLs": cfg.EnableLegacyPHPURLs,
|
||||||
|
@ -51,6 +55,7 @@ func (cfg Config) LogFields() log.Fields {
|
||||||
const (
|
const (
|
||||||
defaultReadTimeout = 2 * time.Second
|
defaultReadTimeout = 2 * time.Second
|
||||||
defaultWriteTimeout = 2 * time.Second
|
defaultWriteTimeout = 2 * time.Second
|
||||||
|
defaultIdleTimeout = 30 * time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
// Validate sanity checks values set in a config and returns a new config with
|
// Validate sanity checks values set in a config and returns a new config with
|
||||||
|
@ -78,6 +83,19 @@ func (cfg Config) Validate() Config {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cfg.IdleTimeout <= 0 {
|
||||||
|
validcfg.IdleTimeout = defaultIdleTimeout
|
||||||
|
|
||||||
|
if cfg.EnableKeepAlive {
|
||||||
|
// If keepalive is disabled, this configuration isn't used anyway.
|
||||||
|
log.Warn("falling back to default configuration", log.Fields{
|
||||||
|
"name": "http.IdleTimeout",
|
||||||
|
"provided": cfg.IdleTimeout,
|
||||||
|
"default": validcfg.IdleTimeout,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return validcfg
|
return validcfg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,10 +176,10 @@ func (f *Frontend) listenAndServe() error {
|
||||||
Handler: f.handler(),
|
Handler: f.handler(),
|
||||||
ReadTimeout: f.ReadTimeout,
|
ReadTimeout: f.ReadTimeout,
|
||||||
WriteTimeout: f.WriteTimeout,
|
WriteTimeout: f.WriteTimeout,
|
||||||
|
IdleTimeout: f.IdleTimeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable KeepAlives.
|
f.srv.SetKeepAlivesEnabled(f.EnableKeepAlive)
|
||||||
f.srv.SetKeepAlivesEnabled(false)
|
|
||||||
|
|
||||||
// Start the HTTP server.
|
// Start the HTTP server.
|
||||||
if f.tlsCfg != nil {
|
if f.tlsCfg != nil {
|
||||||
|
|
Loading…
Reference in a new issue