mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
app/vmselect: limit the default value for -search.maxConcurrentRequests
, so it plays well on systems with more than 16 vCPUs
A single heavy request can saturate all the available CPUs, so let's limit the number of concurrent requests to lower value. This will give more chances for executing insert path.
This commit is contained in:
parent
d88725f133
commit
d0d258b314
1 changed files with 17 additions and 2 deletions
|
@ -21,10 +21,25 @@ import (
|
||||||
|
|
||||||
var (
|
var (
|
||||||
deleteAuthKey = flag.String("deleteAuthKey", "", "authKey for metrics' deletion via /api/v1/admin/tsdb/delete_series")
|
deleteAuthKey = flag.String("deleteAuthKey", "", "authKey for metrics' deletion via /api/v1/admin/tsdb/delete_series")
|
||||||
maxConcurrentRequests = flag.Int("search.maxConcurrentRequests", runtime.GOMAXPROCS(-1)*2, "The maximum number of concurrent search requests. It shouldn't exceed 2*vCPUs for better performance. See also -search.maxQueueDuration")
|
maxConcurrentRequests = flag.Int("search.maxConcurrentRequests", getDefaultMaxConcurrentRequests(), "The maximum number of concurrent search requests. "+
|
||||||
maxQueueDuration = flag.Duration("search.maxQueueDuration", 10*time.Second, "The maximum time the request waits for execution when -search.maxConcurrentRequests limit is reached")
|
"It shouldn't be high, since a single request can saturate all the CPU cores. See also `-search.maxQueueDuration`")
|
||||||
|
maxQueueDuration = flag.Duration("search.maxQueueDuration", 10*time.Second, "The maximum time the request waits for execution when `-search.maxConcurrentRequests` limit is reached")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func getDefaultMaxConcurrentRequests() int {
|
||||||
|
n := runtime.GOMAXPROCS(-1)
|
||||||
|
if n <= 4 {
|
||||||
|
n *= 2
|
||||||
|
}
|
||||||
|
if n > 16 {
|
||||||
|
// A single request can saturate all the CPU cores, so there is no sense
|
||||||
|
// in allowing higher number of concurrent requests - they will just contend
|
||||||
|
// for unavailable CPU time.
|
||||||
|
n = 16
|
||||||
|
}
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
|
||||||
// Init initializes vmselect
|
// Init initializes vmselect
|
||||||
func Init() {
|
func Init() {
|
||||||
tmpDirPath := *vmstorage.DataPath + "/tmp"
|
tmpDirPath := *vmstorage.DataPath + "/tmp"
|
||||||
|
|
Loading…
Reference in a new issue