为了账号安全,请及时绑定邮箱和手机立即绑定

Go Socket Server 出现 EOF 错误?

Go Socket Server 出现 EOF 错误?

Go
眼眸繁星 2022-01-04 10:20:29
我的代码:    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)        }    }我尝试使用ab包 apache2-utils 的命令测试服务器。 ab -c 1500 -n 10000 http://127.0.0.1:8080/完成后,发生EOF错误,因此进程退出:
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-01-04
  • 1 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号