【问题标题】:I sent over than 100 requests to web service [duplicate]我向 Web 服务发送了 100 多个请求 [重复]
【发布时间】:2021-12-19 21:06:56
【问题描述】:

我向使用 Parallel.Foreach 的 Web 服务发送了超过 100 个请求,它处理得很好,但是当使用 Wireshark 查看流量时,我每秒只能看到 4 个或最多 10 个请求。

然后我在 SOAPUI TOOL 中的同一台机器上尝试了批量多线程中的相同案例 Mode 然后我看到 100 个请求是在同一秒发送的。

我正在使用的任何建议都没有

  • C# 2017
  • 框架 4.5
  • 操作系统赢 10
  • CPU 内核 4 I7
  • 内存 16 GB

【问题讨论】:

  • 知道我应该如何处理这种情况
  • 您可能达到了请求数限制。查看this 答案。
  • 您拥有网络服务吗?
  • 我们的供应商的网络服务“不在本地”,并且没有限制发送的请求
  • @MohannadAsha 欢迎来到 StackOverflow。 Parallel.Foreach 专为 CPU 绑定操作而设计。这就是为什么您只看到少数请求的原因,因为您没有 100 个 CPU 内核 :D 请首选 Task.WhenAll 而不是 I/O 操作。

标签: c# multithreading web parallel-processing python-requests


【解决方案1】:

这不是 parallel.foreach 问题 - 问题是 ServicePointManager,它限制了对任何域名的并行请求数。如您所见,标准是 4 个并行请求。

https://docs.microsoft.com/en-us/dotnet/api/system.net.servicepointmanager?view=net-5.0

Parallel.ForEach 会将所有任务排队,但随后请求会遇到限制。哦,那个管理器是可以配置的;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 2020-01-28
    相关资源
    最近更新 更多