2

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

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

当尝试使用4核的标准服务计划时,性能会更好,但不会太高。它仍然比我的笔记本电脑慢很多。 这个人在这里有一个similar issue

这是性能/缩放的预期功能吗? E.q.不适合批量处理CPU密集型方法?

Azure批次会更合适吗?

回答

1

我不知道函数运行的硬件的确切规格,但您可以假设消费计划的每个实例都是低调的单核VM。如果您需要运行CPU密集型的延迟关键型工作负载,那可能不太合适。

您的本地机器可能比那些实例更快,所以这就是350ms与1000ms之间的区别所在。

减少到3000-7000ms与多次执行功能同时在同一实例上运行有关。他们正在争夺CPU,相互放慢速度。对于纯粹的CPU绑定工作负载,您可能会更好地设置"maxConcurrentCalls": 1,host.json