f# - FSharp.Data Http Utilities - 是否可以不需要响应?

标签 f# stress-testing f#-data

我正在编写一个压力测试应用程序,我正在使用 FSharp.Data 来处理这样的 Http 请求...

let! x = Http.AsyncRequestString(url, httpMethod = "POST", headers = getHeaders, body = getFormVals, silentHttpErrors = true)

该行被执行了 100 次。

看看 fiddler,我很快就耗尽了一些连接或线程池,大约 30 个左右的请求同时消失了。之后,应用程序开始变慢,请求的吞吐量似乎与我所访问的 URI 的响应能力有关。当 200 返回时,另一个请求发出。

包含函数位于 async{} block 内(因此是 let!)。

我想做的是完全忽略响应,但是如果我将行更改为 ...

Http.AsyncRequestString(url, httpMethod = "POST", headers = getHeaders, body = getFormVals, silentHttpErrors = true) |> ignore

...根本没有发送任何请求。我不知道为什么会这样。

我对 F# 比较陌生,对这个特定的库 (http://fsharp.github.io/FSharp.Data/library/Http.html) 也很陌生。是否有任何选项我必须指示图书馆我不关心响应是什么并且不阻止,或者我可以用语言做些什么来提供帮助?

最佳答案

如果您从同一个客户端访问网络服务器,您很可能会在服务器上遇到客户端限制。 Web 服务器仅允许来自同一客户端 的有限数量的请求是很正常的。其他请求会排队,只有在其中一个事件请求完成后才会处理。

服务器允许多少个并发客户端请求取决于特定的服务器软件及其配置方式,但该数量通常以个位数或两位数衡量。

我第一次被这个问题困扰是在大约 10 年前,当时我只有 2 个并发客户端连接。

请注意,Web 服务器通常很乐意处理数以千计的并发请求,只要它们来自不同的客户端

因此,您无法从单个客户端对基于 HTTP 的服务进行压力测试。为此,您需要一组分布式客户端。压力测试困难

关于f# - FSharp.Data Http Utilities - 是否可以不需要响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30668002/

相关文章:

.net - 在多线程环境中使用TraceSource

testing - 以 CSV 格式生成摘要报告 Jmeter 输出,如表中所示

f# - 在 F# 中切片二维数组但类似于 Matlab?

f# - 使用 fsharp.data.dll 和异步工作流停止 http 下载到磁盘

f# - CSV 类型提供商

c# - F# 中的 CGRect - 未定义

generics - F# 内联函数 : instance member constraint fail

c# - 这个 C# 复制对象例程如何转换为 F#?

stress-testing - Gatling:如何设置和拆除场景

jmeter - 如何配置JMeter线程组在10秒内处理100万个请求?