1
マイコード:GoソケットサーバーにEOFエラーがありますか?
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エラーが発生したので、プロセスの終了後:
開いているファイル記述子はいくつありますか?それを確認するには 'ulimit -a'を使います。私はそれが10000未満だと思います。 – jfly
また参照してくださいhttp://stackoverflow.com/questions/30352725/why-is-my-hello-world-go-server-getting-crushed-by-apachebench – JimB