gpt4 book ai didi

go - 为什么我在 golang 中的网络服务器不处理并发请求?

转载 作者:IT老高 更新时间:2023-10-28 12:58:15 24 4
gpt4 key购买 nike

这个简单的 HTTP 服务器包含一个对 time.Sleep() 的调用,它使每个请求需要五秒钟。当我尝试快速加载多个浏览器中的选项卡,很明显每个请求排队并按顺序处理。如何让它处理并发请求?

package main

import (
"fmt"
"net/http"
"time"
)

func serve(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, world.")
time.Sleep(5 * time.Second)
}

func main() {
http.HandleFunc("/", serve)
http.ListenAndServe(":1234", nil)
}

其实我是在写完问题后才找到这个答案的,而且很微妙。无论如何我都会发布它,因为我在谷歌上找不到答案。你能看出我做错了什么吗?

最佳答案

您的程序已经同时处理请求。您可以使用 Apache 2 附带的基准测试工具 ab 对其进行测试:

ab -c 500 -n 500 http://localhost:1234/

在我的系统上,基准测试总共需要 5043 毫秒来处理所有 500 个并发请求。 只是您的浏览器限制了每个网站的连接数。

顺便说一句,对 Go 程序进行基准测试并不是那么容易,因为您需要确保您的基准测试工具不是瓶颈,并且它还能够处理那么多并发连接。因此,最好使用几台专用计算机来生成负载。

关于go - 为什么我在 golang 中的网络服务器不处理并发请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10720867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com