gpt4 book ai didi

azure 功能横向扩展

转载 作者:行者123 更新时间:2023-12-04 19:34:56 25 4
gpt4 key购买 nike

我们使用更重量级的控制台应用程序、HTTP 触发器和消费服务计划测试了 Azure Functions 的横向扩展功能。因此,我们期望能够横向扩展并行执行。我们在新的 AppDomain 中执行控制台应用程序,因为函数实例在同一进程中运行。在控制台应用程序中,我们对内存数据库执行 sqlite 数据库操作。

首先我们只执行了该函数 1 次,并测量了执行时间。让它成为x:)我们不断启动增加数量的并行线程。我们发现,在这些情况下,1 个函数应用实例的执行时间为 x * num_of_threads。就好像函数实例已被序列化而不是并行执行一样。

  1. 这可能是什么原因?为什么它们不并行执行?
  2. 默认有哪些硬件?这是相当慢的。可以在消费计划中以某种方式升级吗?为什么没有横向扩展? sg 可以阻止横向扩展功能吗?

感谢您的帮助。

编辑:我的应用程序的基本源代码:

using System.Net;
using System;

public static HttpResponseMessage Run(HttpRequestMessage req, TraceWriter log, ExecutionContext context)
{

string testThreadId = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "id", true) == 0)
.Value;

var funcId = context.InvocationId.ToString();

var homePath = Environment.GetEnvironmentVariable("HOME");


var folderName = Path.Combine(homePath,@"site\wwwroot\JanoRunTime2");
var fileName = Path.Combine(folderName,"AzureFunctionTest.exe");
var configFile = Path.Combine(folderName,"AzureFunctionTest.exe.config");
var setup = new AppDomainSetup();
setup.ApplicationBase = folderName;
setup.ConfigurationFile = configFile;
var newDomain = AppDomain.CreateDomain("JanoTestExecutorDomain_" + funcId, null, setup );

try{

newDomain.ExecuteAssembly(fileName, new []{testThreadId, funcId});

return req.CreateResponse(HttpStatusCode.OK );

}
catch(Exception e){
return req.CreateResponse(HttpStatusCode.InternalServerError);
}
finally{
AppDomain.Unload(newDomain);

}

}

最佳答案

请求是并行执行的,但根据语言存在差异(例如,节点是单线程的)。如果您想要一些工作负载来验证并行执行和扩展,您可以部署一个 github 解决方案 here .

您的函数将在某些条件下扩展到更多实例,但最相关的是吞吐量:Azure Functions 跟踪每单位时间完成的请求数,并在该数字下降时进行扩展。 Here是有关消费计划如何运作的一些信息。

对于硬件,函数和无服务器计算的想法是消除开发人员的这种考虑。函数“实例”可以被视为具有 1.5GB 内存的计算单元。如果您想要对硬件有更多控制,您可以随时运行应用服务计划中的功能。

由于您的工作负载,您可能会看到这种“序列化”行为。如果您在全新的 AppDomain 中启动依赖于 CPU 的工作负载并返回,该函数可能不会跟踪您仍在执行工作。在这种情况下,您可以在不达到吞吐量扩展条件的情况下最大化 CPU。

关于 azure 功能横向扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com