gpt4 book ai didi

c# - 扩展多个 HttpWebRequests?

转载 作者:行者123 更新时间:2023-11-30 12:53:00 27 4
gpt4 key购买 nike

我正在构建一个服务器应用程序,它需要持续向其他几个服务器执行大量 http 请求。目前,我基本上设置了大约 30 个线程,并在每个线程上持续同步运行 HttpWebRequests,实现每秒大约 30 个请求的吞吐量。

我确实在 app.config 中设置了 ServicePoint ConnectionLimit,所以这不是限制因素。

我需要大幅扩大规模。至少我需要更多的 CPU 马力,但我想知道我是否会通过使用 HttpWebRequest 对象的异步方法(例如: .BeginGetResponse() )而不是自己创建线程并使用来获得任何优势这些线程上的同步方法(例如:.GetResponse())。

如果我使用异步方法,显然我必须重新设计我的应用程序,所以我想知道在我去重新编码所有内容之前是否有人可能有一些见解,以防我出去吃午饭。

谢谢!

最佳答案

如果您使用的是 Windows NT,则 System.Net.Sockets.Socket 类始终使用 IO 完成端口进行异步操作。异步模式下的 HTTPWebRequest 使用异步套接字,因此将使用 IOCP。

如果不做详细的基准测试,很难说我们的瓶颈是在 HttpWebRequest 内部,还是在堆栈上,在您的应用程序中,或者在远程端,在服务器中。但是副手,可以肯定的是,asyncc 会给你更好的性能,因为它最终会在幕后使用 IOCP。为异步重新实现应用程序并不困难。

因此,我建议您首先将您的应用程序架构更改为异步。然后查看您获得的最大吞吐量是多少。然后,您可以开始进行基准测试并找出瓶颈所在,并将其消除。

关于c# - 扩展多个 HttpWebRequests?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232637/

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