Утечка памяти в go http server и fasthttp - PullRequest
0 голосов
/ 26 ноября 2018

Мой код был простым сервером fastthttp, как и его примеры на github, но с неизвестной утечкой памяти.Затем я попытался найти его и очистил свои коды, и у него снова возникла эта проблема.

Затем я запустил только официальный пример, и даже у него была утечка памяти (это означает, что я наблюдаю за использованием памяти в диспетчере процессов Windows и егоиспользуемая память растет в нагрузках и go не освобождается даже через некоторое время, пока мои окна не рухнули).

Затем я использовал std net / http на очень простом сервере hello world, и у меня снова возникла эта проблема.Мое использование памяти растет с каждым запросом, и Go не освобождает его.

Моя версия go 1.11.2 windows / amd64

, и это мой код, который имеет эту проблему:

package main

import (
    "net/http"
    "strings"
)

func sayHello(w http.ResponseWriter, r *http.Request) {
    message := r.URL.Path
    message = strings.TrimPrefix(message, "/")
    message = "Hello " + message
    w.Write([]byte(message))
    r.Body.Close()
}
func main() {
    http.HandleFunc("/", sayHello)
    if err := http.ListenAndServe(":8080", nil); err != nil {
        panic(err)
    }
}

1 Ответ

0 голосов
/ 29 ноября 2018

Согласно Перейти к http.Request документации

// The Server will close the request body. The ServeHTTP
// Handler does not need to.

Поэтому вы должны удалить вызов r.Body.Close(), так как он не нужен.

...