微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 扩展多个HttpWebRequests?

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

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

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

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

谢谢!

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐