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 非常慢! 的相关文章

  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • 如何在 Unity 中从 RenderTexture 访问原始数据

    问题的简短版本 我正在尝试访问 Unity 中 RenderTexture 的内容 我一直在使用 Graphics Blit 使用自己的材质进行绘制 Graphics Blit null renderTexture material 我的材
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 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