首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HttpWebRequest非常慢!

HttpWebRequest非常慢!
EN

Stack Overflow用户
提问于 2010-03-26 05:49:02
回答 15查看 64.1K关注 0票数 76

我正在使用一个开源库来连接我的open服务器。我担心was服务器运行非常慢,然后我试着用Ruby做了一个简单的测试,得到了以下结果

HTTP程序: 10次

GET需要2.11秒

Ruby程序:每100个HTTP GET需要18.13秒

C#库: 10次HTTP GETs需要20.81秒

C#库:每100个HTTP GETs需要36847.46秒

我已经分析并发现问题出在这个函数上:

代码语言:javascript
复制
private HttpWebResponse GetRawResponse(HttpWebRequest request) {
  HttpWebResponse raw = null;
  try {
    raw = (HttpWebResponse)request.GetResponse(); //This line!
  }
  catch (WebException ex) {
    if (ex.Response is HttpWebResponse) {
      raw = ex.Response as HttpWebResponse;
    }
  }
  return raw;
}

标记的行需要超过1秒才能完成,而发出1个请求的ruby程序需要.3秒。我还在127.0.0.1上做了所有这些测试,所以网络带宽不是问题。

是什么导致了这种巨大的减速?

更新

查看更改后的基准测试结果。我实际上测试了10个GET,而不是100个,我更新了结果。

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2010-08-31 03:08:58

我发现导致web请求缓慢的主要原因是代理属性。如果在调用GetResponse方法之前将此属性设置为null,则查询将跳过代理自动检测步骤:

代码语言:javascript
复制
request.Proxy = null;
using (var response = (HttpWebResponse)request.GetResponse())
{
}

代理自动检测在返回响应之前最多需要7秒进行查询。这个属性在默认情况下为HttpWebRequest对象设置为on,这有点让人恼火。

票数 177
EN

Stack Overflow用户

发布于 2010-03-26 06:16:22

这可能与您同时打开多个连接的事实有关。默认情况下,打开的HTTP连接的最大数量设置为2。尝试将此代码添加到您的.config文件中,看看是否有帮助:

代码语言:javascript
复制
<system.net>
  .......
  <connectionManagement>
    <add address="*" maxconnection="20"/>
  </connectionManagement>
</system.net>
票数 22
EN

Stack Overflow用户

发布于 2013-01-16 00:26:30

我在一个VB.Net MVC项目中遇到了类似的问题。

在我的本地pc (Windows7)上,命中页面请求的时间不到1秒,但在服务器(Windows Server2008 R2)上,每个页面请求需要20+秒。

我尝试了将代理设置为null的组合

代码语言:javascript
复制
  System.Net.WebRequest.DefaultWebProxy = Nothing
  request.Proxy = System.Net.WebRequest.DefaultWebProxy

更改配置文件,方法是添加

代码语言:javascript
复制
 <system.net>
   .......
   <connectionManagement>
     <add address="*" maxconnection="20"/>
   </connectionManagement>
 </system.net>

这仍然没有减少服务器上缓慢的页面请求时间。最后,解决方案是在服务器本身的IE选项中取消选中“自动检测设置”选项。(在Tools -> Internet Options下,选择Connections选项卡。按LAN设置按钮)

在服务器上取消选中此浏览器选项后,所有页面请求时间立即从20+秒降至1秒以下。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2519655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档