Open
Description
What version of Go are you using (go version
)?
go version go1.15 linux/amd64
Does this issue reproduce with the latest release?
Not sure
What operating system and processor architecture are you using (go env
)?
go env
Output
GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/home/lshaw/.cache/go-build" GOENV="/home/lshaw/.config/go/env" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOINSECURE="" GOMODCACHE="/home/lshaw/.gvm/pkgsets/go1.15/global/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="linux" GOPATH="/home/lshaw/.gvm/pkgsets/go1.15/global" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/home/lshaw/.gvm/gos/go1.15" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/home/lshaw/.gvm/gos/go1.15/pkg/tool/linux_amd64" GCCGO="gccgo" AR="ar" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build821697598=/tmp/go-build -gno-record-gcc-switches"
What did you do?
I build a helloworld net/http using : GOOS=linux GOARCH=mips GOMIPS=softfloat go build -ldflags="-s -w"
and run it on a mips32 board, use top to notice its VSS is 700MB and RSS is 4MB. run multiple of them in parallel will cause 'out of memory' when I set overcommit_memory to 2 very quickly. I have 128MB RAM
The code I use:
package main
import (
"fmt"
"math/rand"
"net/http"
"strconv"
"time"
)
func main() {
min := 8080
max := 60000
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Fosiao you had youre request: %s\n", r.URL.Path)
})
port := ":" + strconv.Itoa(r1.Intn(max-min))
//fmt.Println(port)
http.ListenAndServe(port, nil)
}
What did you expect to see?
I would expect a much smaller VSS on a 128MB 32-bit system, to compare my C/C++ http process only need about 4MB for VSS and 1MB for RSS
What did you see instead?
700MB VSS and easily 'out of memory' errors.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Triage Backlog