从FSharp交互式加载测试http端点的最佳方法是什么?例如,我尝试使用以下内容加载HelloWorld
Azure函数:
open FSharp.Data
async {
let url = "https://transactive.azurewebsites.net/api/HelloWorld"
for i = 1 to 1000 do
let! html = Http.AsyncRequestString(url)
printfn "Invokation %i" i } |> Async.Start
在FSharp Interactive中运行此功能后,AzureFunctions Live Log显示12 TPS。开始第二个FSI导致24 TPS。改为:
open FSharp.Data
let makeAsync = async {
let url = "https://transactive.azurewebsites.net/api/HelloWorld"
for i = 1 to 1000 do
let! html = Http.AsyncRequestString(url)
printfn "Invokation %i" i }
let a = [| for i in 1..5-> makeAsync |]
let results = a |> Async.Parallel |> Async.RunSynchronously
Azure Live Log(图像)中的60TPS结果。有趣的是,最多可达5,平行度的每次增加都会导致另一个12TPS。将并行度提高到5以上并不会增加TPS。然而,开始第二个FSI导致大约120TPS。
我有两个问题:
发生了什么事?为什么12是一个神奇的数字?
从单个FSI中运行的脚本中尽可能地驱动HTTP端点的最佳方法是什么?
我的机器是一个分配了4个内核和10Gig RAM的虚拟机。
如果有人想尝试该功能,该功能仍在运行(假设它没有遇到Daily Usage
配额)。