app/vmagent: apply sane limits to -remoteWrite.queues

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/707
This commit is contained in:
Aliaksandr Valialkin 2020-08-30 21:23:38 +03:00
parent 49140edd41
commit 3b1ecac04b

View File

@ -3,6 +3,7 @@ package remotewrite
import ( import (
"flag" "flag"
"fmt" "fmt"
"runtime"
"sync" "sync"
"sync/atomic" "sync/atomic"
@ -41,6 +42,10 @@ var rwctxs []*remoteWriteCtx
// Contains the current relabelConfigs. // Contains the current relabelConfigs.
var allRelabelConfigs atomic.Value var allRelabelConfigs atomic.Value
// maxQueues limits the maximum value for `-remoteWrite.queues`. There is no sense in setting too high value,
// since it may lead to high memory usage due to big number of buffers.
var maxQueues = runtime.GOMAXPROCS(-1) * 4
// Init initializes remotewrite. // Init initializes remotewrite.
// //
// It must be called after flag.Parse(). // It must be called after flag.Parse().
@ -48,9 +53,14 @@ var allRelabelConfigs atomic.Value
// Stop must be called for graceful shutdown. // Stop must be called for graceful shutdown.
func Init() { func Init() {
if len(*remoteWriteURLs) == 0 { if len(*remoteWriteURLs) == 0 {
logger.Fatalf("at least one `-remoteWrite.url` must be set") logger.Fatalf("at least one `-remoteWrite.url` command-line flag must be set")
}
if *queues > maxQueues {
*queues = maxQueues
}
if *queues <= 0 {
*queues = 1
} }
if !*showRemoteWriteURL { if !*showRemoteWriteURL {
// remoteWrite.url can contain authentication codes, so hide it at `/metrics` output. // remoteWrite.url can contain authentication codes, so hide it at `/metrics` output.
httpserver.RegisterSecretFlag("remoteWrite.url") httpserver.RegisterSecretFlag("remoteWrite.url")