如何使用FSharp Interactive加载测试HTTP端点

时间:2017-03-05 00:21:13

标签: azure f# azure-functions f#-interactive

从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。

Azure Function Live Log

我有两个问题:

  1. 发生了什么事?为什么12是一个神奇的数字?

  2. 从单个FSI中运行的脚本中尽可能地驱动HTTP端点的最佳方法是什么?

  3. 我的机器是一个分配了4个内核和10Gig RAM的虚拟机。

    如果有人想尝试该功能,该功能仍在运行(假设它没有遇到Daily Usage配额)。

0 个答案:

没有答案