feat(backend): add http server timeouts

This commit is contained in:
Łukasz Mierzwa
2021-04-02 19:30:30 +01:00
committed by Łukasz Mierzwa
parent 6dbbcaa5ac
commit 6f496cf450
15 changed files with 52 additions and 3 deletions
+5
View File
@@ -7,6 +7,11 @@
- Header values are now sanitised before logging when `log:config` is
enabled #2930.
### Added
- `listen:timeout:read` and `listen:timeout:write` config options for
setting HTTP server request read and response write timeouts.
## v0.81
### Fixed
+4 -2
View File
@@ -465,8 +465,10 @@ func serve(errorHandling pflag.ErrorHandling) error {
}
httpServer := &http.Server{
Addr: listen,
Handler: router,
Addr: listen,
Handler: router,
ReadTimeout: config.Config.Listen.Timeout.Read,
WriteTimeout: config.Config.Listen.Timeout.Write,
}
quit := make(chan os.Signal, 1)
@@ -163,6 +163,9 @@ level=info msg=" - instance"
level=info msg=" - cluster"
level=info msg="listen:"
level=info msg=" address: 127.0.0.1"
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
@@ -188,6 +188,9 @@ level=info msg=" - instance"
level=info msg=" - '@receiver'"
level=info msg="listen:"
level=info msg=" address: \"\""
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
@@ -77,6 +77,9 @@ level=info msg=" static: []"
level=info msg=" unique: []"
level=info msg="listen:"
level=info msg=" address: \"\""
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
+3
View File
@@ -77,6 +77,9 @@ level=info msg=" static: []"
level=info msg=" unique: []"
level=info msg="listen:"
level=info msg=" address: \"\""
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
@@ -77,6 +77,9 @@ level=info msg=" static: []"
level=info msg=" unique: []"
level=info msg="listen:"
level=info msg=" address: \"\""
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
@@ -79,6 +79,9 @@ level=info msg=" static: []"
level=info msg=" unique: []"
level=info msg="listen:"
level=info msg=" address: 127.0.0.1"
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
@@ -87,6 +87,9 @@ level=info msg=" static: []"
level=info msg=" unique: []"
level=info msg="listen:"
level=info msg=" address: \"\""
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
@@ -30,6 +30,10 @@ alertmanager:
uri: http://127.0.0.1:9094
proxy: true
debug: true
listen:
timeout:
read: 1m
write: 1m
-- test.sh --
trap "echo got signal" SIGTERM SIGINT
@@ -77,6 +77,9 @@ level=info msg=" static: []"
level=info msg=" unique: []"
level=info msg="listen:"
level=info msg=" address: \"\""
level=info msg=" timeout:"
level=info msg=" read: 10s"
level=info msg=" write: 20s"
level=info msg=" tls:"
level=info msg=" cert: \"\""
level=info msg=" key: \"\""
+5
View File
@@ -852,6 +852,9 @@ Syntax:
listen:
address: string
port: integer
timeout:
read: duration
write: duration
prefix: string
tls:
cert: string
@@ -860,6 +863,8 @@ listen:
- `address` - Hostname or IP to listen on.
- `port` - HTTP port to listen on.
- `timeout:read` - HTTP server request read timeout
- `timeout:write` - HTTP server response write timeout
- `prefix` - URL root for karma, you can use to if you wish to serve it from
location other than `/`. This option is mostly useful when using karma behind
reverse proxy with other services on the same IP but different URL root.
+2
View File
@@ -114,6 +114,8 @@ func SetupFlags(f *pflag.FlagSet) {
f.String("listen.prefix", "/", "URL prefix")
f.String("listen.tls.cert", "", "TLS certificate path (enables HTTPS)")
f.String("listen.tls.key", "", "TLS key path (enables HTTPS)")
f.Duration("listen.timeout.read", time.Second*10, "HTTP request read timeout")
f.Duration("listen.timeout.write", time.Second*20, "HTTP response write timeout")
f.String("sentry.public", "", "Sentry DSN for Go exceptions")
f.String("sentry.private", "", "Sentry DSN for JavaScript exceptions")
+3
View File
@@ -102,6 +102,9 @@ labels:
- gg
listen:
address: 0.0.0.0
timeout:
read: 10s
write: 20s
tls:
cert: ""
key: ""
+5 -1
View File
@@ -137,7 +137,11 @@ type configSchema struct {
}
Listen struct {
Address string
TLS struct {
Timeout struct {
Read time.Duration
Write time.Duration
}
TLS struct {
Cert string
Key string
}