加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 扩展多个HttpWebRequests?

发布时间:2020-12-15 21:08:42 所属栏目:百科 来源:网络整理
导读:我正在构建一个服务器应用程序,需要持续向其他几台服务器执行大量的http请求.目前,我基本上设置了大约30个线程,并在每个线程上同步连续运行HttpWebRequests,实现了每秒约30个请求的吞吐量. 我确实在app.config中设置了ServicePoint ConnectionLimit,这不是限
我正在构建一个服务器应用程序,需要持续向其他几台服务器执行大量的http请求.目前,我基本上设置了大约30个线程,并在每个线程上同步连续运行HttpWebRequests,实现了每秒约30个请求的吞吐量.

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

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

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

谢谢!

解决方法

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

如果没有进行详细的基准测试,很难说我们的瓶颈是在HttpWebRequest中,还是在堆栈中,应用程序中,还是在远程端,在服务器中.但是,无论如何,asyncc肯定会给你更好的性能,因为它最终将使用IOCP.重新实现应用程序的异步并不困难.

所以,我建议您先将应用程序架构更改为异步.然后看看你获得了多少最大吞吐量.然后,您可以开始基准测试并找出瓶颈所在的位置,并将其删除.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读