13

我正在测试函数的 CPU 性能,所以我创建了一个函数来查找数字中的素数。它由 Azure 服务总线触发。在我的本地机器上,它在 350 毫秒内运行。

该函数在消耗计划中运行时大约需要 1000 毫秒。当我向该函数批量发送 100 条消息时,它确实可以扩展到大约 16 个实例,但每个函数的性能会大大降低到 3000-7000 毫秒之间。

尝试使用 4 核的标准服务计划时,性能更好,但没有那么多。它仍然比我的笔记本电脑慢得多。这里的这个人也有类似的问题

这是功能预期的性能/扩展吗?Eq 不适合 CPU 密集型方法的批处理?

Azure 批处理会更合适吗?

4

1 回答 1

4

我不知道运行 Functions 的硬件的确切规格,但您可以假设每个 Consumption plan 实例都是一个低配置的单核 VM。如果您需要运行 CPU 密集型延迟关键型工作负载,那么这可能不是一个很好的选择。

您的本地计算机可能比这些实例更快,因此这就是 350 毫秒与 1000 毫秒差异的来源。

减少到 3000-7000ms 与函数的多个执行在同一实例上同时运行的事实有关。他们正在争夺 CPU,彼此减慢速度。对于纯 CPU 密集型工作负载,您最好设置"maxConcurrentCalls": 1host.json.

于 2017-08-15T08:26:15.277 回答