译 | Azure 应用服务中的程序崩溃监控
點擊上方藍字關注“汪宇杰博客”
原文:Yun Jung Choi, Puneet Gupta
翻譯:汪宇杰
應用程序崩潰經常發生。崩潰是指代碼中的異常未得到處理并終止進程。這些未處理的異常也稱為二次機會異常(second chance exceptions)。當您的應用程序崩潰時,所有正在進行的請求(該應用程序當前正在處理的請求)都將中止。對于這些請求,最終用戶可能會遇到HTTP 502錯誤。當應用程序重新啟動時,由于冷啟動,應用程序的可用性仍然受到影響,這會使情況變得更糟。
在運行生產應用程序時,重要的是要快速確定應用程序崩潰的根本原因,以進行故障排除并最大程度地降低業務影響。擁有正確的日志集是快速解決問題的關鍵。但是,崩潰時可能很難捕獲這些日志。
借助 App Service Diagnostics 的崩潰監控,您可以在崩潰時收集內存轉儲并調用堆棧信息,以找出根本原因。通過在 App Service 上托管的應用程序上啟用代理,可以進行崩潰監控。進程啟動時,代理會附加一個調試器(本例為 procdump.exe)。如果進程因未處理的異常而崩潰,則調試器將捕獲內存轉儲。
目前只在 Windows 服務器上的 Web 應用程序的 App Service Diagnostics 中提供。
啟用崩潰監控
如果您在應用程序上使用遠程調試,則遠程調試優先于崩潰監控,并且崩潰監控將不會運行。
使用 Azure 門戶
若要訪問崩潰監控,請在Azure門戶中導航到您的App Service,然后在左側導航面板中單擊“診斷并解決問題”。然后,單擊名為“診斷工具”的主頁。進入診斷工具后,單擊崩潰監控。
配置
崩潰監控基于可根據需要配置的4種條件進行操作。啟用崩潰監控可能會對您的應用造成輕微的性能影響,因為調試器始終附著到您的進程中。延遲會根據您的應用程序代碼引發的異常數量而有所不同。
存儲帳戶:選定的存儲帳戶將存儲通過崩潰監視捕獲的內存轉儲。強烈建議您為每個應用使用一個存儲帳戶。選擇已用于其他應用程序的存儲帳戶可能會導致崩潰監控失敗。另外,如果正在進行崩潰監控會話,請不要更改應用程序的存儲帳戶。
開始時間:崩潰監控會話將在所選時間開始。
停止時間:崩潰捕獲會話將在選定的時間結束,而不管捕獲的內存轉儲是否達到最大值。要在“崩潰監視”會話后完全禁用代理,請單擊“禁用代理”鏈接。
最大內存轉儲數:收集最大轉儲數后,崩潰監視會話將結束。要在“崩潰監視”會話后完全禁用代理,請單擊“禁用代理”鏈接。
崩潰監控配置保存在您應用的應用設置中。每次保存新配置時,您的應用都會重新啟動。
單擊“啟動監視器”后,將保存配置,并且監視會話將開始。
在該工具仍在運行時,從存儲帳戶中刪除內存轉儲可能會導致該工具收集超出所需數量的數據。從存儲帳戶刪除內存轉儲之前,請確保會話已完成。
分析數據
配置并啟動“崩潰監視”會話后,該工具將在應用程序崩潰時自動收集內存轉儲和堆棧跟蹤。您可以在“分析”部分中按退出代碼查看內存轉儲和堆棧跟蹤信息。當您的應用程序崩潰時,內存轉儲和堆棧跟蹤信息將變為可用,盡管您可能需要等待15分鐘才能顯示完整的日志。
您可以單擊查看詳細信息鏈接以展開崩潰的詳細信息。
然后,您可以單擊 Callstack 下的 View 鏈接以查看崩潰的調用堆棧。
此外,還有一個選項可以直接下載轉儲文件。單擊下載文件鏈接旁邊的下載轉儲文件。下載后,在 Visual Studio 中將其打開。
不僅如此,還可以通過導航到“調試”菜單,然后選擇“窗口”,然后選擇“調用堆棧”來啟動調用堆棧窗口。
如果正確配置了 Visual Studio 和 Symbol 文件,單擊“僅托管調試”將嘗試加載 PDB 文件并打開該函數的確切源代碼。即使不行,Visual Studio 調試器也會顯示如下的異常詳細信息。這樣,您可以直接從內存轉儲文件中識別調用堆棧和異常消息。
查看歷史數據
您可以在“查看歷史記錄”部分中查看過去15天的數據。如果您從存儲帳戶中刪除內存轉儲,它們將不再顯示在這里。
禁用崩潰監控
要禁用崩潰監視,可在“分析”分區中單擊“禁用代理”。這將刪除崩潰監控的應用程序設置并重新啟動您的應用程序。
歡迎發送電子郵件至diagnostics@microsoft.com,隨時分享您對崩潰監控的反饋或問題。
汪宇杰博客
Azure | .NET |?微軟 MVP
無廣告,不賣課,做純粹的技術公眾號
喜歡本篇內容請點個在看
總結
以上是生活随笔為你收集整理的译 | Azure 应用服务中的程序崩溃监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欢迎来到 C# 9.0(Welcome
- 下一篇: 使用Seq搭建免费的日志服务