我的代碼: 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 的命令測試服務(wù)器。 ab -c 1500 -n 10000 http://127.0.0.1:8080/完成后,發(fā)生EOF錯誤,因此進程退出:
1 回答

慕俠2389804
TA貢獻1719條經(jīng)驗 獲得超6個贊
io.EOF
表示連接被另一端關(guān)閉。我猜是因為ab達到了打開文件描述符的限制,所以連接被關(guān)閉了。使用ulimit -a
進行檢查。如果小于 10000,則使用ulimit -n 65536
更改它。這是為了允許超過 10000 個連接。我隨機選擇了65536,你需要root權(quán)限來做這個配置。
- 1 回答
- 0 關(guān)注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消