gpt4 book ai didi

Go Socket 服务器出现 EOF 错误?

转载 作者:IT王子 更新时间:2023-10-29 02:23:20 28 4
gpt4 key购买 nike

我的代码:

    var connMax int = 0

func CheckErr(err error) {
if err != nil {
fmt.Fprintf(os.Stderr, "Error occured: %s\n", err)
os.Exit(1)
}
}

func handler(conn net.Conn) {
defer conn.Close()

var buf [512]byte
n, err := conn.Read(buf[0:])
CheckErr(err)

connMax += 1
fmt.Println(connMax)

result := bytes.NewBuffer(nil)
result.Write(buf[0:n])

fmt.Println(string(result.Bytes()))

conn.Write([]byte("HTTP/1.1 201 OK\r\n"))

func Run() {
ln, err := net.Listen("tcp", ":8080")
CheckErr(err)
for {
conn, err := ln.Accept()
CheckErr(err)
go handler(conn)
}
}

我尝试使用包 apache2-utils 的命令 ab 测试服务器。ab -c 1500 -n 10000 http://127.0.0.1:8080/

完成后,出现 EOF 错误,因此进程退出: enter image description here

最佳答案

io.EOF 表示连接被另一端关闭。我猜是因为 ab 达到了打开文件描述符的限制,所以连接被关闭了。使用 ulimit -a 来检查它。如果小于 10000,则使用 ulimit -n 65536 进行更改。这是为了允许超过 10000 个连接。我随机选择 65536,你需要 root 权限才能进行此配置。

关于Go Socket 服务器出现 EOF 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36513215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com