我的代码: 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权限来做这个配置。
- 1 回答
- 0 关注
- 247 浏览
添加回答
举报
0/150
提交
取消