我們有一個簡單的Azure函數來生成一個DocumentDB查詢。這似乎是我們第一次稱之爲需要等待很長時間才能完成,然後連續的呼叫非常快。爲什麼Azure函數需要花費過多時間才能「醒來」?
例如,我剛打開我們的應用程序,第一次函數調用花費了10760ms,絕對值得任何最終用戶注意。在此之後,所有的函數調用都需要大約100ms來處理,並且幾乎不可察覺。
似乎在Azure函數中有一些「喚醒」週期。有什麼方法可以最大限度地減少這種情況,或者更好的方式是將其記錄在某處,以便我們能夠理解這裏發生了什麼?
您的意思是'Cosmos DB' ....根據我的理解,經過5分鐘的空閒時間後,您的功能進入冷啓動模式....防止更改爲冷啓動模式非常容易。只需在每5分鐘執行一次的相同功能應用程序中添加時間觸發功能即可。但請注意,如果您的免費執行信用超出,這可能會導致額外成本。 – Hackerman
嗯,它仍然是CosmosDB DocumentDB(hehehe),但它可能是任何後端服務,我們仍然看到這個冷啓動。這是記錄在任何地方? – Graham
我在這裏找到它https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app/ ...它說:冷啓動發生在功能應用程序第一次請求空閒後,發生在5分鐘不活動之後。當一個Function App啓動時,它會索引所有函數,並將C#和F#腳本編譯到內存中的程序集中。所以編譯時間會增加冷啓動時間。由於功能執行尚未開始,因此客戶不需要支付冷啓動費用,但它確實會導致事件處理延遲。 – Hackerman