我向 Web 服务发送了 100 多个请求 [重复]

Posted

技术标签:

【中文标题】我向 Web 服务发送了 100 多个请求 [重复]【英文标题】:I sent over than 100 requests to web service [duplicate] 【发布时间】: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 欢迎来到 ***。 Parallel.Foreach 专为 CPU 绑定操作而设计。这就是为什么您只看到少数请求的原因,因为您没有 100 个 CPU 内核 :D 请首选 Task.WhenAll 而不是 I/O 操作。 【参考方案1】:

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

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

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

【讨论】:

以上是关于我向 Web 服务发送了 100 多个请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥如果我向服务器上的数据库请求超过 100 行,但结果却一无所获?

获取http代码请求

防止重复发送Ajax请求的解决方案

Web 服务器如何在单个端口 (80) 上一次处理多个用户的传入请求?

为啥在 python 中对 asyncio 服务器的多个请求的时间会增加?

如何在 Android 中将 JSON 参数作为 Web 服务请求发送? [复制]