本文幫助排查Azure應(yīng)用服務(wù)中應(yīng)用性能緩慢的問題。
如果在本文中有任何需要協(xié)助的地方,可以聯(lián)系MSDN Azure和堆棧溢出論壇上的Azure專家?;蛘?,也可以提出Azure支持事件。請轉(zhuǎn)到Azure支持站點,并單擊“獲取支持”。
癥狀
瀏覽應(yīng)用時,頁面加載緩慢,并且有時還會超時。
原因
此問題通常是應(yīng)用程序級別的問題造成的,例如:
·網(wǎng)絡(luò)請求耗時過長
·應(yīng)用程序代碼或數(shù)據(jù)庫查詢效率低下
·應(yīng)用程序的內(nèi)存/CPU使用率過高
·應(yīng)用程序因異常而崩潰
疑難解答步驟
故障排除可劃分為三種不同的任務(wù),依次為:
1.觀察和監(jiān)視應(yīng)用程序行為
2.收集數(shù)據(jù)
3.緩解問題
應(yīng)用服務(wù)在每個步驟提供了多種選項。
1.觀察和監(jiān)視應(yīng)用程序行為
跟蹤服務(wù)運行狀況
每次發(fā)生服務(wù)中斷或性能下降時Azure會進(jìn)行宣傳??梢栽贏zure門戶中跟蹤服務(wù)的運行狀況。
監(jiān)視應(yīng)用
此選項可讓你找出應(yīng)用程序是否存在任何問題。在應(yīng)用的邊欄選項卡中,單擊“請求和錯誤”磁貼。“指標(biāo)”邊欄選項卡顯示所有可以添加的指標(biāo)。
可能需要在應(yīng)用中監(jiān)視的一些指標(biāo)包括
·平均內(nèi)存工作集
·平均響應(yīng)時間
·CPU時間
·內(nèi)存工作集
·請求
監(jiān)視Web終結(jié)點狀態(tài)
如果在“標(biāo)準(zhǔn)”定價層中運行應(yīng)用,應(yīng)用服務(wù)允許從三個地理位置監(jiān)視兩個終結(jié)點。
終結(jié)點監(jiān)視可從測試Web URL的響應(yīng)時間和運行時間的分布式地理位置配置Web測試。該測試可對Web URL執(zhí)行HTTP GET操作,以從每個位置確定響應(yīng)時間和運行時間。每個已配置位置每5分鐘運行一次測試。
使用HTTP響應(yīng)代碼監(jiān)視運行時間,并且以毫秒為單位計算響應(yīng)時間。如果HTTP響應(yīng)代碼大于或等于400或響應(yīng)時間超過30秒,則監(jiān)視測試失敗。如果從所有指定的位置監(jiān)視測試均成功,則終結(jié)點被視為可用。
有關(guān)詳細(xì)信息,請參閱在Azure應(yīng)用服務(wù)中監(jiān)視應(yīng)用
使用擴(kuò)展的應(yīng)用程序性能監(jiān)視
還可以使用站點擴(kuò)展監(jiān)視應(yīng)用程序的性能。
每個應(yīng)用服務(wù)應(yīng)用都提供了一個可擴(kuò)展的管理終結(jié)點,通過此終結(jié)點可使用一組作為站點擴(kuò)展部署的功能強(qiáng)大的工具。擴(kuò)展包括:
·源代碼編輯器,如Azure DevOps。
·連接的資源(如連接到應(yīng)用的MySQL數(shù)據(jù)庫)的管理工具。
2.收集數(shù)據(jù)
應(yīng)用服務(wù)為Web服務(wù)器和Web應(yīng)用程序中的日志記錄信息提供診斷功能。此信息分為Web服務(wù)器診斷和應(yīng)用程序診斷。
啟用Web服務(wù)器診斷
可以啟用或禁用以下種類的日志:
·詳細(xì)錯誤日志記錄-指示故障的HTTP狀態(tài)代碼(狀態(tài)代碼400或更大數(shù)字)的詳細(xì)錯誤消息。其中可能包含有助于確定服務(wù)器返回錯誤代碼的原因的信息。
·失敗請求跟蹤-有關(guān)失敗請求的詳細(xì)信息,包括對用于處理請求的IIS組件和每個組件所用的時間的跟蹤。在嘗試提高應(yīng)用性能或查找導(dǎo)致特定HTTP錯誤的問題時,此信息很有用。
·Web服務(wù)器日志記錄-使用W3C擴(kuò)展日志文件格式的HTTP事務(wù)信息。這在確定總體應(yīng)用指標(biāo)(如處理的請求數(shù)量或來自特定IP地址的請求數(shù))時非常有用。
啟用應(yīng)用程序診斷
可通過多種選項收集應(yīng)用服務(wù)中的應(yīng)用程序性能數(shù)據(jù)、從Visual Studio中實時分析應(yīng)用程序,或修改應(yīng)用程序代碼以記錄更多信息和跟蹤??梢曰卺槍?yīng)用程序的訪問權(quán)限和通過監(jiān)視工具觀察到的內(nèi)容選擇相關(guān)選項。
手動設(shè)置診斷跟蹤
如果有權(quán)訪問Web應(yīng)用程序源代碼,使用應(yīng)用程序診斷可以捕獲Web應(yīng)用程序生成的信息。ASP.NET應(yīng)用程序可使用System.Diagnostics.Trace類將信息記錄到應(yīng)用程序診斷日志。但是需要更改代碼并重新部署應(yīng)用程序。如果應(yīng)用在測試環(huán)境中運行,則推薦使用此方法。
有關(guān)如何在應(yīng)用程序中配置日志記錄的詳細(xì)說明,請參閱在Azure應(yīng)用服務(wù)中啟用應(yīng)用的診斷日志記錄。
使用診斷工具
應(yīng)用服務(wù)提供了智能的交互式體驗,可幫助我們排查應(yīng)用的問題,且無需配置。如果應(yīng)用確實出現(xiàn)問題,診斷工具會指出問題所在,并引導(dǎo)你獲取適當(dāng)?shù)男畔ⅲ员愀p松快速地排查和解決問題。
若要訪問應(yīng)用服務(wù)診斷,請在Azure門戶中導(dǎo)航到你的應(yīng)用服務(wù)應(yīng)用或應(yīng)用服務(wù)環(huán)境。在左側(cè)導(dǎo)航欄中,單擊“診斷并解決問題”。
使用Kudu調(diào)試控制臺
應(yīng)用服務(wù)隨附可用于調(diào)試、瀏覽和上傳文件的調(diào)試控制臺,以及用于獲取環(huán)境相關(guān)信息的JSON終結(jié)點。此控制臺稱為應(yīng)用的Kudu控制臺或SCM儀表板。
轉(zhuǎn)到鏈接https://<Your app name>.scm.chinacloudsites.cn/即可訪問此儀表板。
Kudu提供的一些信息和功能包括:
·應(yīng)用程序的環(huán)境設(shè)置
·日志流
·診斷轉(zhuǎn)儲
·調(diào)試控制臺,可以在其中運行Powershell cmdlet和基本DOS命令。
Kudu的另一項有用功能是,如果應(yīng)用程序引發(fā)第一次異常,可以使用Kudu和SysInternals工具Procdump創(chuàng)建內(nèi)存轉(zhuǎn)儲。這些內(nèi)存轉(zhuǎn)儲是進(jìn)程的快照,通??蓭椭挪檩^復(fù)雜的應(yīng)用問題。
有關(guān)Kudu提供的功能的詳細(xì)信息,請參閱你應(yīng)該了解的Azure DevOps工具。
3.緩解問題
縮放應(yīng)用
在Azure應(yīng)用服務(wù)中,為了提高性能和吞吐量,可以調(diào)整運行應(yīng)用程序的規(guī)模。縱向擴(kuò)展應(yīng)用涉及到兩個相關(guān)操作:將應(yīng)用服務(wù)計劃更改為較高的定價層,以及在切換到較高的定價層后配置特定的設(shè)置。
有關(guān)縮放的詳細(xì)信息,請參閱縮放Azure應(yīng)用服務(wù)中的應(yīng)用。
此外,可以選擇在多個實例上運行應(yīng)用程序。擴(kuò)展不僅能提供更強(qiáng)大的處理功能,而且還能提供一定程度的容錯。如果進(jìn)程在某個實例上中斷,其他實例會繼續(xù)處理請求。
可以將縮放設(shè)置為手動或自動。
使用AutoHeal
AutoHeal會根據(jù)你選擇的設(shè)置(例如配置更改、請求、基于內(nèi)存的限制或執(zhí)行請求所需的時間),回收應(yīng)用程序的工作進(jìn)程。在大多數(shù)情況下,回收進(jìn)程是在出現(xiàn)問題后進(jìn)行恢復(fù)的最快方式。盡管始終都可從Azure門戶中直接重啟應(yīng)用,但AutoHeal可以自動執(zhí)行此操作。只需在應(yīng)用的根web.config中添加一些觸發(fā)器即可。即使應(yīng)用程序并非.NET應(yīng)用,這些設(shè)置的工作方式也仍然相同。
有關(guān)詳細(xì)信息,請參閱自動修復(fù)Azure網(wǎng)站。
重啟應(yīng)用
重啟通常是在發(fā)生一次性問題后進(jìn)行恢復(fù)的最簡單方式。Azure門戶的應(yīng)用邊欄選項卡中提供了用于停止或重啟應(yīng)用的選項。
還可以使用Azure Powershell管理應(yīng)用。有關(guān)詳細(xì)信息,請參閱將Azure PowerShell與Azure資源管理器配合使用。