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