请在提交问题之前回答以下问题。谢谢!
您正在使用的 Go 版本是什么(go version
)?
go version devel +cc155eb
这个问题是否在使用最新版本的发布中重现?
是的。
您正在使用的操作系统和处理器架构是什么(go env
)?
GOARCH="arm64"
GOBIN=""
GOCACHE="/home/*/.cache/go-build"
GOEXE=""
GOHOSTARCH="arm64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/username/go"
GORACE=""
GOROOT="/home/username/go-temp"
GOTMPDIR=""
GOTOOLDIR="/home/username/go-temp/pkg/tool/linux_arm64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build212786936=/tmp/go-build -gno-record-gcc-switches"
您做了什么?
我在我们日常任务的日志中找到了这个错误(cd /src ; go test -count 3 -timeout 180m -run=^$ -bench=. ... )。
单独运行命令 "go test -bench BenchmarkClientServerParallelTLS64" 也可以重现此错误,但错误有时会出现,有时不会出现,您可能需要多次运行它。
您期望看到什么?
通过。
您看到了什么?
我看到了两种错误消息。当执行命令 "go test -bench BenchmarkClientServerParallelTLS64" 时,会出现以下错误信息:
goos: linux
goarch: arm64
pkg: net/http
BenchmarkClientServerParallel4-32 30000 37850 ns/op 12324 B/op 88 allocs/op
BenchmarkClientServerParallel64-32 10000 307570 ns/op 13278 B/op 96 allocs/op
BenchmarkClientServerParallelTLS4-32 20000 112708 ns/op 41859 B/op 433 allocs/op
BenchmarkClientServerParallelTLS64-32 2018/03/25 13:47:49 http: TLS handshake error from 127.0.0.1:58119: read tcp 127.0.0.1:34212->127.0.0.1:58119: use of closed network connection
20000 106537 ns/op 43259 B/op 454 allocs/op
通过。 ok net/http 47.081s
当运行所有基准测试( cd /src ; go test -count 3 -timeout 180m -run=^$ -bench=. ... )时,除了上述错误之外,还可能会发生另一个错误。即:
15:10:47 BenchmarkClientServerParallelTLS64-64 Build timed out (after 10 minutes). Marking the build as aborted.
15:20:47 Build was aborted
我不明白问题出在哪里。它是如何产生的?有人能向我解释一下吗,谢谢!
8条答案
按热度按时间h79rfbju1#
你好,有人知道这个问题吗?
mo49yndu2#
我可以确认我的盒子里的这个bug
Linux hikey13 4.15-hikey #1 SMP PREEMPT Sat Mar 10 22:41:04 UTC 2018 aarch64 GNU/Linux
vulvrdjw3#
是的,这个问题在x86架构上也存在。
dddzy1tm4#
我发现它与#9661有关。在基准测试后,许多TCP连接处于TIME_WAIT状态。如果TCP连接在没有SO_REUSEPORT或SO_REUSEADDR的情况下启动,将会导致此问题。
ni65a41a5#
@mengzhuo我不确定,错误信息来自tlsConn.Handshake(),我不知道为什么在服务器关闭后在这个阶段还有连接。
kdfy810k6#
你好,你知道这个问题的原因吗?我已经调查了一段时间,但仍然不明白。你能给我一些建议吗?谢谢!
7gcisfzg7#
这是一段Go语言的错误日志,主要涉及到网络通信和并发测试。从日志中可以看出,测试过程中出现了超时和连接错误的信息。具体来说,有以下几个问题:
pgx2nnw88#
看起来这仍然是一个问题。除了这个特定基准的错误之外,它还是一个轻微的烦恼,因为它会破坏标准库基准输出,因此它不会用标准工具正确解析(
golang.org/x/perf/storage/benchfmt
) 。出于某种原因,错误日志也会输出到stdout而不是stderr。很容易解决,但如果我们能清理一下就更好了。$x_1a^0b^1^x$