mirror of
https://github.com/minio/minio.git
synced 2025-04-15 16:39:16 -04:00
fix: use optimized json.NewEncoder instead for metrics (#15648)
This commit is contained in:
parent
9065274d02
commit
157272dc5b
@ -388,10 +388,12 @@ func (a adminAPIHandlers) MetricsHandler(w http.ResponseWriter, r *http.Request)
|
|||||||
if err != nil || interval < time.Second {
|
if err != nil || interval < time.Second {
|
||||||
interval = defaultMetricsInterval
|
interval = defaultMetricsInterval
|
||||||
}
|
}
|
||||||
|
|
||||||
n, err := strconv.Atoi(r.Form.Get("n"))
|
n, err := strconv.Atoi(r.Form.Get("n"))
|
||||||
if err != nil || n <= 0 {
|
if err != nil || n <= 0 {
|
||||||
n = math.MaxInt32
|
n = math.MaxInt32
|
||||||
}
|
}
|
||||||
|
|
||||||
var types madmin.MetricType
|
var types madmin.MetricType
|
||||||
if t, _ := strconv.ParseUint(r.Form.Get("types"), 10, 64); t != 0 {
|
if t, _ := strconv.ParseUint(r.Form.Get("types"), 10, 64); t != 0 {
|
||||||
types = madmin.MetricType(t)
|
types = madmin.MetricType(t)
|
||||||
@ -428,6 +430,7 @@ func (a adminAPIHandlers) MetricsHandler(w http.ResponseWriter, r *http.Request)
|
|||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
w.Header().Set(xhttp.ContentType, string(mimeJSON))
|
w.Header().Set(xhttp.ContentType, string(mimeJSON))
|
||||||
|
|
||||||
|
enc := json.NewEncoder(w)
|
||||||
for n > 0 {
|
for n > 0 {
|
||||||
var m madmin.RealtimeMetrics
|
var m madmin.RealtimeMetrics
|
||||||
mLocal := collectLocalMetrics(types, hostMap, diskMap)
|
mLocal := collectLocalMetrics(types, hostMap, diskMap)
|
||||||
@ -446,14 +449,9 @@ func (a adminAPIHandlers) MetricsHandler(w http.ResponseWriter, r *http.Request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
m.Final = n <= 1
|
m.Final = n <= 1
|
||||||
|
|
||||||
// Marshal API response
|
// Marshal API response
|
||||||
jsonBytes, err := json.Marshal(m)
|
if err := enc.Encode(&m); err != nil {
|
||||||
if err != nil {
|
|
||||||
writeErrorResponseJSON(ctx, w, toAdminAPIErr(ctx, err), r.URL)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
_, err = w.Write(jsonBytes)
|
|
||||||
if err != nil {
|
|
||||||
n = 0
|
n = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user