練習 - 手動調整 Web 應用程式
當您預期流量會增加時,應該相應放大系統。 您也可以使用相應放大回應衰退的效能。
在飯店訂房系統的範例中,您會在因為特殊活動、特殊優惠或季節性波動預期出現額外流量時,增加 Web 應用程式的執行個體數目。 當需求降低時,您會將系統規模調整回來。
在此練習中,您會建立 App Service 方案,並使用此方案部署 Web 應用程式。 您會監視負載下的 Web 應用程式效能。 然後擴大應用程式,並確認方案已改善應用程式的效能。
此練習使用實作 Web API 的範例 Web 應用程式。 Web API 公開 HTTP POST 和 GET 作業,以建立並擷取客戶在飯店訂房網站的訂房記錄。 預訂不會儲存。 取得作業只會擷取虛擬資料。
此練習也會執行用戶端應用程式,模擬數個使用者同時發出 POST 與 GET 作業。 此應用程式提供的工作負載可讓您用來測試調整前後的 Web 應用程式效能。
建立 App Service 方案和 Web 應用程式
重要
您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
登入 Azure 入口網站。
從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。 [建立資源] 窗格隨即會顯示。
在左側功能表窗格的 [類別] 下,選取 [Web],搜尋並選取 Web 應用程式,然後選取 [建立]。 [建立 Web 應用程式] 窗格會隨即出現。
在 [基本] 索引標籤上,為每個設定輸入下列值。
注意
Web 應用程式必須有唯一的名稱。 建議您使用類似 <自己的姓名或縮寫>飯店系統 的格式。 只要在此練習中看到
<your-webapp-name>
,就使用此名稱。設定 值 專案詳細資料 訂用帳戶 選取您要用於此練習的 Azure 訂用帳戶 資源群組 選取 [新建] 連結,然後輸入名為 mslearn-scale 的新資源群組 執行個體詳細資料 名稱 請參閱表格前的附註。 輸入您可以記住供本練習稍後使用的唯一名稱 發佈 代碼 執行階段堆疊 .NET 6 (LTS) 作業系統 Windows 區域 接受預設 App Service 方案 Windows 方案 接受預設 定價方案 接受預設 選取 [檢閱 + 建立]>[建立]。 等候建立和部署 Web 應用程式。
建置並部署 Web 應用程式
在 Azure 工作列中,選取 Cloud Shell 圖示以開啟 Azure Cloud Shell,然後執行下列命令,下載旅館訂房系統的原始程式碼。
git clone https://github.com/MicrosoftDocs/mslearn-hotel-reservation-system.git
前往 mslearn-hotel-reservation-system/src 資料夾。
cd mslearn-hotel-reservation-system/src
建置飯店系統應用程式。 有兩個應用程式,實作系統 Web API 的 Web 應用程式,以及您要用於載入 Web 應用程式測試的用戶端應用程式。
dotnet build
準備發佈 HotelReservationSystem Web 應用程式。
cd HotelReservationSystem dotnet publish -o website
移至 website 資料夾,其中包含已發佈的檔案。 將檔案壓縮並部署到您在上一個工作中建立的 Web 應用程式。 將下列程式碼複製到記事本,並以您的 Web 應用程式名稱取代
<your-webapp-name>
,然後將編輯過的程式碼區塊貼到 Cloud Shell 中予以執行。cd website zip website.zip * az webapp deploy --src-path website.zip --name <your-webapp-name> --resource-group mslearn-scale
使用您的網頁瀏覽器移至
http://<your-webapp-name>.azurewebsites.net/api/reservations/1
。 一份 JSON 文件,內含訂房號碼 1 的詳細資料。
監視相應放大前的 Web 應用程式效能
返回 Cloud Shell 並移至 ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient 資料夾。
cd ~/mslearn-hotel-reservation-system/src/HotelReservationSystemTestClient
使用程式碼編輯器編輯此資料夾中的 App.config 檔案。
code App.config
取消註解指定
ReservationsServiceURI
的行,並將「您的網站名稱」值更換為您的 Web 應用程式名稱。 該檔案看起來應該像下列範例。<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="NumClients" value="100" /> <add key="ReservationsServiceURI" value="https://<your-webapp-name>.azurewebsites.net/" /> <add key="ReservationsServiceCollection" value="api/reservations" /> </appSettings> </configuration>
注意
此檔案中的
NumClients
設定,會指定可同時嘗試連線到 Web 應用程式並執行工作的用戶端數目。 此工作包含建立訂房記錄,然後執行查詢以擷取訂房詳細資料。 所用資料皆是假資料。 不會留存在任何位置。 此值請保持設定為100
。選取 Ctrl+S 來儲存檔案。
使用程式碼編輯器,編輯此資料夾中的 HotelReservationSystemTestClient.csproj 檔案。
code HotelReservationSystemTestClient.csproj
編輯指定
TargetFramework
的那一行,使之符合您為 Web 應用程式選取的執行階段堆疊。 將TargetFramework
值變更為netcoreapp7.0
。 該檔案看起來應該像下列範例。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp7.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="12.0.1" /> <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.5.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\HotelReservationSystemTypes\HotelReservationSystemTypes.csproj" /> </ItemGroup> </Project>
選取 Ctrl+S 以儲存盤案,然後按 Ctrl+Q 關閉程式碼編輯器。
以新的設定重建測試用戶端應用程式。
dotnet build
執行用戶端應用程式。 當用戶端開始執行、建立訂房記錄及執行查詢時,您會看到出現幾則訊息。 請讓系統執行幾分鐘。 回應非常緩慢,很快用戶端要求就會開始失敗,出現 HTTP 408 (逾時) 錯誤。
dotnet run
在 Azure 入口網站中,選取 [前往資源] 以開啟您的 Web 應用程式。
在左側的功能表窗格中,依序選取 [監視] 和 [計量]。
在您 Web 應用程式窗格的功能表列右側,依序選取 [當地時間: 過去 24 小時 (自動)] 時間範圍、[過去 30 分鐘] 和 [套用]。
在窗格的 [圖表標題] 下,將下列計量新增至圖表:
- 選取 [新增計量],然後在 [計量] 下拉式清單下,選取 [CPU 時間]。 針對 [彙總] 選取 [總和]。
- 選取 [新增計量],然後在 [計量] 下拉式清單下,選取 [Http 伺服器錯誤]。 針對 [彙總] 選取 [總和]。
- 選取 [新增計量],然後在 [計量] 下拉式清單下,選取 [Http 4xx]。 針對 [彙總] 選取 [總和]。
- 選取 [新增計量],然後在 [計量] 下拉式清單下,選取 [回應時間]。 針對 [彙總],選取 [平均]。
在右側功能表列中,選取 [釘選到儀表板]。 [釘選到儀表板] 窗格隨即出現;選取 [新建] 索引標籤。
在 [儀表板名稱] 下拉式清單中,輸入您的 Web 應用程式名稱,然後選取 [建立和釘選]。
讓系統穩定執行五分鐘,然後記下 CPU 時間、HTTP 4xx 錯誤的數目和平均回應時間。 您應該會看到大量的 HTTP 4xx 錯誤。 這些錯誤是 HTTP 408 逾時錯誤。 平均回應時間為數秒。 您可能偶爾會看到 HTTP 伺服器錯誤,視網頁伺服器處理負擔的方式而定。
當您執行下一個工作時,請保持用戶端應用程式繼續執行。
相應放大 Web 應用程式並驗證效能改善
在 Azure 入口網站中,選取您的 Web 應用程式名稱 (App Service),然後在左側功能表窗格的 [設定] 下,選取 [擴增 (App Service 方案)]。 [擴增 (App Service 方案)] 窗格會隨即出現。
在 [設定] 索引標籤上,選取 [手動縮放],然後將 [執行個體計數] 設定為 5。 選取儲存。
切換至執行用戶端應用程式的 Cloud Shell。 您應該會看到較少的要求失敗並發生錯誤,但有些要求仍會逾時。
讓應用程式再執行五分鐘。 接著,移至 Azure 入口網站中儀表板上顯示應用程式計量的圖表。 您應該會看到因為現在有五倍多的 CPU 電源可用,所以 CPU 時間已大幅增加。 平均回應時間應該會下降,HTTP 4xx 錯誤的數目也應該減少。 以下圖表顯示一組一般的結果。 系統會記下發生相應放大的點。
如果想要多做些實驗,請嘗試將 App Service 方案的執行個體計數增加至 10。 S1 層支援的執行個體數目上限為 10。 您應該注意到 CPU 時間會進一步增加,而回應時間和 HTTP 4xx 錯誤則對應下降。
返回執行用戶端應用程式的 Cloud Shell。 按 Enter 以停止應用程式。
在 Azure 入口網站中,將執行個體計數設定回 1。 選取您的 Web 應用程式,然後在左側的功能表窗格中,選取 [擴增 (App Service 方案)]。 在 [設定] 索引標籤上,將 [執行個體計數] 設定為 1,然後選取 [儲存]。