簡體   English   中英

在 Azure 函數(Http 觸發器、Python 3)中,如何控制服務器可以處理的最大並發請求數?

[英]In Azure functions (Http triggers, Python 3), how do I control the maximum concurrent requests the server can handle?

將 Python 3.8 用於 Azure 函數應用程序,其中所有函數都是 HTTP 觸發器。 我們啟用了 HTTP 2 ...

在此處輸入圖片說明

下面是我們的 host.json 文件

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[1.*, 2.0.0)"
  }
}

我們同時從客戶端(Angular 9)應用程序向服務器發送 30 個請求(15 個是 OPTIONS 請求,另外 15 個是 GET),並且注意到其中 20 個被處理得相對較快,但其余的需要明顯處理時間更長。 下面是兩個並排的請求

在此處輸入圖片說明 在此處輸入圖片說明

對於較長的請求,我已經通過 curl 和 Postman 驗證,它們單獨返回的時間要快得多,這讓我相信服務器上有一些我可以調整的並發設置,但我不知道在哪里。

編輯:這里有更多信息。 我的匿名函數如下所示......

def main(req: func.HttpRequest) -> func.HttpResponse:
    """."""
    logging.info("received request")

但請注意,當函數響應緩慢時,該函數在 Azure 日志中報告的時間......

2020-11-17 14:29:24.094 Executing 'Functions.download-image' (Reason='This function was programmatically called via the host APIs.', Id=xxx-xxx)
Information
2020-11-17 14:29:32.143 received request 

在我被告知函數被調用和函數的第一個日志語句之間有 8 秒的延遲。 下面是我的“橫向擴展”的樣子......

在此處輸入圖片說明

對於此問題,您可以檢查函數應用的擴展選項卡。 在此處輸入圖片說明

您可以手動擴展實例,也可以根據需要定義自定義自動擴展。

正如您提到的,前 20 個請求的處理速度相對較快,所以我猜您選擇P1應用服務計划(如下圖所示),因為P1計划最多有 20 個實例。 如果您當前的應用服務計划最多只有 20 個實例,您需要將您的計划擴展到更高的定價層。 在此處輸入圖片說明

順便說一句,如果您希望快速處理請求,最好在第一個屏幕截圖中啟用“始終開啟”。 否則,如果您的函數應用很長時間沒有收到請求,它就會空閑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM