我注意到,与Azure门户上创建的其他函数相比,从HTTP Azure函数向存储队列添加消息相当慢(平均1.5秒)。
为了测试这一点,我创建了一个非常基本的Azure函数,它接受HTTP请求,向其添加一个唯一ID,并将其作为消息添加到存储队列。我创建了两个类似的函数应用程序。在其中一个应用程序上,我在Azure门户上创建了这个简单的Azure函数,而在第2节,我通过一个新的VS项目上传了一个。VS项目函数的性能是在500个请求中平均运行时间为900ms。在Azure Portal上创建的函数的性能在500个请求上平均运行时间为200毫秒。为什么会有这么大的性能差异?
功能如下:
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
[Queue("data"), StorageAccount("AzureWebJobsStorage")] ICollector<string> queue,
ILogger log)
{
string uniqId = Guid.NewGuid().ToString("N");
string queryString = $"{req.QueryString.ToString().Trim('?')}&ui={uniqId}";
queue.Add(queryString);
return new OkObjectResult("OK");
}
1条答案
按热度按时间46scxncf1#
门户Azure函数和VS IDE Azure函数项目之间存在代码类型差异,门户函数应用程序扩展的C#脚本(.csx)类型和C#类库(.cs)显示了性能差异的原因。
如Azure Functions的MS Doc中所述,门户函数可能会有一点不同,因为它们必须经过编译,然后运行,从IDE部署是预编译函数。相比之下,预编译函数将占上风。