Compare commits

...

1 Commits

Author SHA1 Message Date
Jiekun
0471c62d5e test build 2025-06-04 16:20:17 +08:00
2 changed files with 21 additions and 0 deletions

View File

@@ -3,6 +3,8 @@ package main
import (
"flag"
"fmt"
"github.com/VictoriaMetrics/VictoriaMetrics/lib/cgroup"
"github.com/VictoriaMetrics/VictoriaMetrics/lib/memory"
"io"
"net"
"net/http"
@@ -223,6 +225,13 @@ func requestHandler(w http.ResponseWriter, r *http.Request) bool {
return true
}
availableMemory := memory.Allowed() + memory.Remaining()
currentMemory := cgroup.GetMemoryUsage()
if currentMemory*100/int64(availableMemory) > 95 {
httpserver.Errorf(w, r, "out of memory error")
return true
}
if strings.HasPrefix(p.Suffix, "prometheus/api/v1/import/prometheus") {
prometheusimportRequests.Inc()
if err := prometheusimport.InsertHandler(at, r); err != nil {

View File

@@ -48,6 +48,18 @@ func GetMemoryLimit() int64 {
return n
}
func GetMemoryUsage() int64 {
n, err := getMemStat("memory.usage_in_bytes")
if err == nil {
return n
}
n, err = getMemStatV2("memory.current")
if err != nil {
return 0
}
return n
}
func getMemStatV2(statName string) (int64, error) {
// See https: //www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html#memory-interface-files
return getStatGeneric(statName, "/sys/fs/cgroup", "/proc/self/cgroup", "")