最近公司使用 AWS Lambda Function 來當基礎服務, 而且越用越多。我也呼應寫了一個 AWS Lambda Serverless Web API, 還加碼寫一個 Client Package 來打這個 API (對, 只有一個 .cs 檔案幫忙做 HTTP Request ...)。但由於 HTTP 回應實在太慢了, 我決定稍微做個併發 Request 測試, 花了些時間, 但大家應該 5 分鐘就可以知道結論了 : 一定要避免 冷啟動 (Cold Start) 問題 ( 6~8 秒才能回應, 不管 Request 方是在 AWS 環境內還是外) 若機器全數在 AWS 雲內, 可得到平均回應 51 ms ~ 61 ms, 還算行 (畢竟我們已經獲得 Lambda 開發與佈署的好處了) 若需要最穩健快速的 Server 回應體驗, 就別用 Lambda 吧 (一般而言, 應該也沒有冷啟動問題了) 疑 ? 好像只花了不到 1 分鐘 ! 前置準備 用 AWS Lambda Serverless for VS 模板寫一隻 AspNetCore API, 一鍵佈署到 AWS, 並獲得一個 API Gateway 的 Public HTTP 網址 測試工具可以抓 Netling , 是用 AspNetCore3.0 寫的, Git 下載, VS 編譯並執行看看 當然, 要有 NetCore 3.0 Runtime 環境 測試腳本 設計情境: 2 個 Threads, 併發跑 10 個 Requests .\Netling.ConsoleClient.exe https://{xxx}.execute-api.us-west-2.amazonaws.com/{xxx} -t 2 -c 10 外網機器發動請求 (測試程式不在 AWS 雲內) Run 1 ( 冷啟動 , Max: 6191 ms, Min: 153 ms) 10 requests in 10.86s Requests/sec: 1 Bandwidth: 0 mbit Errors: 0 Latency Median: 541.385 ms StdDev:
NW Pie - 老吳的技術探索 Blog
劍心 ~紀念軟體開發 10+ 年~ ~紀念寶寶 元 年~