日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...

發布時間:2024/7/23 asp.net 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編者按:即使.NET Core3.1.5已經發布,在進行.NET Core的性能診斷時,我們有時依然不知該從何處下手,那這篇介紹.NET Core3.0中引入的診斷工具,或許能為我們提供參考。

在.NET Core 3.0中,我們引入了一套工具,這些工具利用了.NET運行時中的新功能,使診斷和解決性能問題變得更加容易。

這些運行時功能可幫助您回答一些常見的診斷問題:

  • 我的應用程序健康嗎?

  • 為什么我的應用程序有異常行為?

  • 為什么我的應用程序崩潰了?

  • 我的應用程序健康嗎?

    通常,應用程序可能會慢慢開始泄漏內存,并最終導致內存不足異常。在其他時候,某些有問題的代碼路徑可能會導致CPU使用率激增。這些只是您可以通過指標主動識別的一些問題類別。

    指標

    指標表示一段時間內的數據量度。指標(或時間序列)數據使您可以從高層次觀察系統狀態。與Windows上的.NET Framework不同,.NET Core不會發出性能計數器。相反,我們引入了一種通過EventCounter?API?在.NET Core中發出指標的新方法。

    EventCounters提供了Windows性能計數器的改進,因為這些計數器現在可在支持.NET Core的所有操作系統上使用。此外,與perf計數器不同,它們還可以在低特權環境(例如xcopy部署)中使用。不幸的是,由于缺少諸如性能監視器(perfmon)之類的工具,因此很難實時使用這些指標。

    dotnet-counters

    在3.0-preview5中,我們引入了一個新的命令行工具,用于實時觀察.NET Core應用程序發出的指標。

    您可以通過運行以下命令來安裝此.NET全局工具

    dotnet?tool install?--global?dotnet-counters?--version?1.0.3-preview5.19251.2

    在下面的示例中,當我們將負載生成器指向Web應用程序時,我們看到應用程序的CPU利用率和工作集內存急劇上升。

    有關如何使用此工具的詳細說明,請參閱dotnet-counters自述文件。對于已知的限制,請查看GitHub上的未解決問題。

    dotnet-counters

    為什么我的應用程序有異常行為?

    雖然指標可以幫助識別異常行為的發生,但它們幾乎無法提供問題的可見性。要回答為什么您的應用程序具有異常行為的問題,您需要通過跟蹤收集其他信息。例如,通過跟蹤收集的CPU配置文件可以幫助您識別代碼中的熱路徑。

    追蹤

    跟蹤是離散事件的不加時間戳的記錄。跟蹤包含本地上下文,可讓您更好地推斷系統的命運。傳統上,.NET Framework(以及ASP.NET等框架)通過Windows事件跟蹤(ETW)發出有關其內部的診斷跟蹤。在.NET Core中,這些跟蹤被寫入Windows上的ETW和Linux上的LTTng。

    dotnet-trace

    在3.0-preview5中,每個.NET Core應用程序都會打開一個雙工管道EventPipe(該管道可以在其上發出事件)(在* nix上是Unix域套接字/在Windows上是一個命名管道)。當我們仍在研究控制器協議時,請實現此協議的預覽版。dotnet-trace

    您可以通過運行以下命令來安裝此.NET全局工具

    dotnet?tool install?--global?dotnet-trace--version?1.0.3-preview5.19251.2

    在上面的示例中,我dotnet trace使用默認配置文件運行,該配置文件啟用了CPU事件探查器事件和.NET運行時事件。

    除了默認事件之外,您還可以根據要嘗試執行的調查來啟用其他提供程序。

    運行后dotnet trace,將顯示一個.netperf文件。該文件包含運行時事件和可以在perfview中顯示的示例?CPU堆棧。Visual Studio的下一個更新(16.1)也將添加對可視化這些跟蹤的支持。

    如果捕獲跟蹤時在OS X或Linux上運行,則可以選擇將這些.netperf文件轉換為可以使用Speedscope.app可視化的.speedscope.json文件。

    您可以通過運行以下命令來轉換現有跟蹤

    dotnet?trace convert?<input-netperf-file>

    下圖顯示了冰柱圖,可視化了我們剛剛在Speedscope中捕獲的軌跡。

    有關如何使用此工具的詳細說明,請參閱dotnet-trace自述文件。對于已知的限制,請查看GitHub上的未解決問題。dotnet-trace

    為什么我的應用程序崩潰了?

    在某些情況下,僅通過跟蹤過程就不可能確定導致異常行為的原因。如果流程崩潰或我們可能需要更多信息(例如訪問整個流程堆)的情況,則流程轉儲可能更適合分析。

    轉儲分析

    轉儲是通常在進程意外終止時捕獲的進程的工作虛擬內存狀態的記錄。診斷核心轉儲通常用于確定應用程序崩潰或意外行為的原因。

    傳統上,您在應用程序崩潰時依靠操作系統來捕獲轉儲(例如Windows錯誤報告),或者在滿足某些觸發條件時使用procdump之類的工具來捕獲轉儲。

    迄今為止,在Linux上使用.NET捕獲轉儲的挑戰是使用NET捕獲轉儲,gcore否則調試器會導致極大的轉儲,因為現有工具不知道在.NET Core進程中要修剪哪些虛擬內存頁。

    此外,即使您已經收集了這些轉儲,也仍然需要分析調試器,因為它需要獲取調試器并將其配置為加載sos(.NET的調試器擴展),這具有挑戰性。

    dotnet-dump

    3.0.0-preview5,我們引入了一個新工具,使您可以捕獲和分析Windows和Linux上的進程轉儲。

    dotnet-dump?仍在積極開發中,下表顯示了哪些操作系統當前支持哪些功能。

    視窗OS X的Linux
    收集

    ?

    ?

    ?

    分析

    ?

    ?

    ?

    您可以通過運行以下命令來安裝此.NET全局工具

    dotnet?tool install?--global?dotnet-dump?--version?1.0.3-preview5.19251.2

    安裝完成后,您可以通過運行以下命令來捕獲進程轉儲dotnet?dump

    sudo?$HOME/.dotnet/tools/dotnet-dump?collect?-p?

    在Linux上,可以通過運行以下命令加載結果轉儲來分析結果轉儲

    dotnet?dump?analyze?<dump-name>

    在下面的示例中,我嘗試通過遍歷堆來確定崩潰轉儲的ASP.NET Core宿主環境。

    有關如何使用此工具的詳細說明,請參閱dotnet-dump自述文件。對于已知的dotnet-dump限制,請查看GitHub上的未解決問題。

    總結

    以上是生活随笔為你收集整理的net应用程序中发生了未经处理的异常怎么办_介绍一些在.NET Core 3.0中引入的诊断改进工具...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。