3 回答
TA贡献1796条经验 获得超7个赞
您的程序已经可以同时处理请求。您可以ab
使用Apache 2附带的基准测试工具对其进行测试。
ab -c 500 -n 500 http://localhost:1234/
在我的系统上,基准测试总共花了5043毫秒才能满足所有500个并发请求。只是您的浏览器限制了每个网站的连接数。
顺便说一下,对Go程序进行基准测试并不是那么容易,因为您需要确保基准测试工具不是瓶颈,并且它还能够处理这么多并发连接。因此,最好使用几个专用计算机来生成负载。
TA贡献1807条经验 获得超9个赞
在Server.go中,接受连接后,将在Serve函数中生成go例程。以下是代码段,:
// Serve accepts incoming connections on the Listener l, creating a
// new service goroutine for each. The service goroutines read requests and
// then call srv.Handler to reply to them.
func (srv *Server) Serve(l net.Listener) error {
for {
rw, e := l.Accept()
if e != nil {
......
c, err := srv.newConn(rw)
if err != nil {
continue
}
c.setState(c.rwc, StateNew) // before Serve can return
go c.serve()
}
}
TA贡献2051条经验 获得超10个赞
如果使用xhr请求,请确保xhr实例是本地变量。
例如,xhr = new XMLHttpRequest()
是一个全局变量。当您使用相同的xhr变量进行并行请求时,您只会收到一个结果。因此,您必须像这样在本地声明xhr var xhr = new XMLHttpRequest()
。
- 3 回答
- 0 关注
- 238 浏览
添加回答
举报