HttpWebRequest 非常慢!

2023-11-21

我正在使用开源库连接到我的网络服务器。我担心网络服务器运行速度极慢,然后我尝试在 Ruby 中进行简单的测试,得到了这些结果

Ruby 程序:10 个 HTTP 需要 2.11 秒 获取

Ruby 程序:100 个 HTTP 需要 18.13 秒 获取

C# 库:10 个 HTTP 需要 20.81 秒 获取

C# 库:100 个 HTTP 需要 36847.46 秒 获取

我分析了一下,发现问题出在这个函数上:

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 秒以上才能完成,而 Ruby 程序发出 1 个请求需要 0.3 秒。我也在 127.0.0.1 上进行所有这些测试,因此网络带宽不是问题。

是什么导致了如此巨大的减速?

UPDATE

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


我发现网络请求缓慢的罪魁祸首是代理属性。如果在调用 GetResponse 方法之前将此属性设置为 null,则查询将跳过代理自动检测步骤:

request.Proxy = null;
using (var response = (HttpWebResponse)request.GetResponse())
{
}

代理自动检测在返回响应之前最多需要 7 秒的时间进行查询。有点烦人的是,HttpWebRequest 对象默认设置了此属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HttpWebRequest 非常慢! 的相关文章

  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 按成员序列化

    我已经实现了template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 重载<<的返回值

    include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • ORM(对象关系映射)中的“N+1选择问题”是什么?

    N 1 选择问题 通常被认为是对象关系映射 ORM 讨论中的一个问题 我理解它与必须对对象中看似简单的东西进行大量数据库查询有关世界 有人对这个问题有更详细的解释吗 假设您有一个集合Car对象 数据库行 以及每个Car有一个集合Wheel对
  • 是否可以在 Python 中的 Azure Function Linux 使用计划中保存临时文件?

    首先对我的英语感到抱歉 我有一个使用 Python 的 Azure Function Linux 消费计划 我需要生成一个 html 使用 wkhtmltopdf 转换为 pdf 并通过电子邮件发送 generate temporally
  • MapDispatchToProps 导致父组件中出现 Typescript 错误,期望 Actions 作为 props 传递

    在我的子组件中 我定义了 MapDispatchToProps 将它们传递到 connect 中 并相应地定义了一个在 React Component Props Interface 中扩展的接口 PropsFromDispatch 现在
  • 在 Google App Engine 上运行 Alembic 迁移

    我有一个使用 SQLAlchemy Flask SQLAlchemy 和 Alembic Flask Migrate 的 Flask 应用程序 该应用程序在 Google App Engine 上运行 我想使用 Google Cloud S
  • 如何使用 Rcpp 和内联设置 g++ 编译器标志?

    我想设置 std c 0x 使用带有内联的 Rcpp I saw R 使用内联包时的 C 优化标志但不想进行系统范围的更改 所以我尝试了 Dirk 答案中的选项 2 I tried settings getPlugin Rcpp setti
  • ZF2 - 如何使用 Hydrator/exchangeArray() 填充嵌套对象

    我有一个对象 其值存储在我的数据库中 我的对象还包含另一个对象 该对象仅使用它的 ID 外键 存储在数据库中 http framework zend com manual 2 0 en modules zend stdlib Hydrato
  • 如何设置 Apache CXF 客户端以使用 WebSphere 信任库? (收到“未找到受信任的证书”异常。)

    首先 我将从总结开始 我正在使用 Apache CXF 客户端通过 SSL 与使用自签名证书的 Apache CXF 服务提供商进行通信 我将证书导入到客户端服务器上的 WebSphere 信任库中 但仍然收到 javax net ssl
  • 如何在内联编辑中使用数据表中的下拉列表

    我正在使用数据表 1 8 它太棒了 我最近读了一篇关于数据表列内联编辑的文章 内联编辑 在本文中 单击编辑超链接时 数据表列变为文本字段 但我的 要求是我必须显示一个下拉列表 意味着单击编辑超链接时它应该转换为下拉列表 并且应该来自我的数据
  • Python:如何在txt文件中写入控制台中的错误?

    我有一个 python 脚本 每 10 分钟就会向我发送一封电子邮件 其中包含控制台中编写的所有内容 我在我的 ubuntu 18 04 vps 中使用 crontab 运行它 有时它不会发送邮件 所以我假设当发生错误时执行会停止 但是如何
  • 表和图交叉参考官 R

    我希望能够使用官员交叉引用 Word 文档中的表格或图形R包裹 到目前为止我已经遇到过这些材料 但他们似乎没有解决方案 https davidgohel github io officer articles word html table
  • 在 iOS 中设置 AVCaptureDevice 输出的灰度

    我想在我的应用程序中实现自定义相机 所以 我正在使用创建这个相机AVCaptureDevice 现在我只想在我的自定义相机中显示灰色输出 所以我试图使用这个setWhiteBalanceModeLockedWithDeviceWhiteBa
  • 调用 stringWithFormat 时,长期使用哪个正确的说明符?

    我有这段运行良好的代码 但我不知道这是否是调用 stringWithFormat 的正确方法 因为在文档中 d 代表 int 并且我传递了一个 long long seconds long NSDate date timeIntervalS
  • 使用 R 制作动画 gif [重复]

    这个问题在这里已经有答案了 有人对用 R 制作 GIF 动画有什么建议吗 我正在尝试制作一些延时地图 GIF 重复问题 请参阅之前的 StackOverflow 问题在 R 中创建一系列绘图它提供了许多解决方案 包括指向其他 有用包的指针
  • 使用元组作为参数列表调用方法[重复]

    这个问题在这里已经有答案了 我想知道最好的方法是什么 val foo Some a val bar Some 2 def baz a String b Int if b 2 0 Some a b else None x zip y flat
  • 如何在 Rust 中使用参数重载或可选参数?

    我正在尝试为二叉树编写一个打印函数 这是迄今为止我所拥有的 impl TreeNode fn print self self print 0 fn print self level u8 for i in range 0 level pri
  • 将每个字典值转换为 utf-8(字典理解?)

    我有一本字典 我想将每个值转换为 utf 8 这可行 但是有没有 更Pythonic 的方法 for key in row keys row key unicode row key encode utf 8 对于我可以做的清单 unicod
  • jquery 获取选中复选框

    我正在尝试获取复选框列表和已检查的计数 我有这个 var obj this closest li find checkbox var childCount obj size var checkedCount obj checked leng
  • 数据库中所有表的列表

    如何使用查询获取 SQL Server 数据库中所有表的列表 我的目的是在网页上动态显示它 Try SELECT name from sys tables 这应该会给你你想要的 然后 您需要从网页调用它以按所需格式显示 您可能想查看 如何使
  • BASH 不以防万一

    我正在尝试找出一种合理的方法来在案例中执行 NOT 子句 我这样做的原因是为了 遇到情况时进行转码 也就是说 如果我击中了 avi 没有理由再次将其转为 avi 我可以 只需将其移开 这就是我的案例底部的范围 should做 无论如何 我有
  • HttpWebRequest 非常慢!

    我正在使用开源库连接到我的网络服务器 我担心网络服务器运行速度极慢 然后我尝试在 Ruby 中进行简单的测试 得到了这些结果 Ruby 程序 10 个 HTTP 需要 2 11 秒 获取 Ruby 程序 100 个 HTTP 需要 18 1