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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

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

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

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

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

這些運(yùn)行時(shí)功能可幫助您回答一些常見(jiàn)的診斷問(wèn)題:

  • 我的應(yīng)用程序健康嗎?

  • 為什么我的應(yīng)用程序有異常行為?

  • 為什么我的應(yīng)用程序崩潰了?

  • 我的應(yīng)用程序健康嗎?

    通常,應(yīng)用程序可能會(huì)慢慢開(kāi)始泄漏內(nèi)存,并最終導(dǎo)致內(nèi)存不足異常。在其他時(shí)候,某些有問(wèn)題的代碼路徑可能會(huì)導(dǎo)致CPU使用率激增。這些只是您可以通過(guò)指標(biāo)主動(dòng)識(shí)別的一些問(wèn)題類(lèi)別。

    指標(biāo)

    指標(biāo)表示一段時(shí)間內(nèi)的數(shù)據(jù)量度。指標(biāo)(或時(shí)間序列)數(shù)據(jù)使您可以從高層次觀察系統(tǒng)狀態(tài)。與Windows上的.NET Framework不同,.NET Core不會(huì)發(fā)出性能計(jì)數(shù)器。相反,我們引入了一種通過(guò)EventCounter?API?在.NET Core中發(fā)出指標(biāo)的新方法。

    EventCounters提供了Windows性能計(jì)數(shù)器的改進(jìn),因?yàn)檫@些計(jì)數(shù)器現(xiàn)在可在支持.NET Core的所有操作系統(tǒng)上使用。此外,與perf計(jì)數(shù)器不同,它們還可以在低特權(quán)環(huán)境(例如xcopy部署)中使用。不幸的是,由于缺少諸如性能監(jiān)視器(perfmon)之類(lèi)的工具,因此很難實(shí)時(shí)使用這些指標(biāo)。

    dotnet-counters

    在3.0-preview5中,我們引入了一個(gè)新的命令行工具,用于實(shí)時(shí)觀察.NET Core應(yīng)用程序發(fā)出的指標(biāo)。

    您可以通過(guò)運(yùn)行以下命令來(lái)安裝此.NET全局工具

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

    在下面的示例中,當(dāng)我們將負(fù)載生成器指向Web應(yīng)用程序時(shí),我們看到應(yīng)用程序的CPU利用率和工作集內(nèi)存急劇上升。

    有關(guān)如何使用此工具的詳細(xì)說(shuō)明,請(qǐng)參閱dotnet-counters自述文件。對(duì)于已知的限制,請(qǐng)查看GitHub上的未解決問(wèn)題。

    dotnet-counters

    為什么我的應(yīng)用程序有異常行為?

    雖然指標(biāo)可以幫助識(shí)別異常行為的發(fā)生,但它們幾乎無(wú)法提供問(wèn)題的可見(jiàn)性。要回答為什么您的應(yīng)用程序具有異常行為的問(wèn)題,您需要通過(guò)跟蹤收集其他信息。例如,通過(guò)跟蹤收集的CPU配置文件可以幫助您識(shí)別代碼中的熱路徑。

    追蹤

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

    dotnet-trace

    在3.0-preview5中,每個(gè).NET Core應(yīng)用程序都會(huì)打開(kāi)一個(gè)雙工管道EventPipe(該管道可以在其上發(fā)出事件)(在* nix上是Unix域套接字/在Windows上是一個(gè)命名管道)。當(dāng)我們?nèi)栽谘芯靠刂破鲄f(xié)議時(shí),請(qǐng)實(shí)現(xiàn)此協(xié)議的預(yù)覽版。dotnet-trace

    您可以通過(guò)運(yùn)行以下命令來(lái)安裝此.NET全局工具

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

    在上面的示例中,我dotnet trace使用默認(rèn)配置文件運(yùn)行,該配置文件啟用了CPU事件探查器事件和.NET運(yùn)行時(shí)事件。

    除了默認(rèn)事件之外,您還可以根據(jù)要嘗試執(zhí)行的調(diào)查來(lái)啟用其他提供程序。

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

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

    您可以通過(guò)運(yùn)行以下命令來(lái)轉(zhuǎn)換現(xiàn)有跟蹤

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

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

    有關(guān)如何使用此工具的詳細(xì)說(shuō)明,請(qǐng)參閱dotnet-trace自述文件。對(duì)于已知的限制,請(qǐng)查看GitHub上的未解決問(wèn)題。dotnet-trace

    為什么我的應(yīng)用程序崩潰了?

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

    轉(zhuǎn)儲(chǔ)分析

    轉(zhuǎn)儲(chǔ)是通常在進(jìn)程意外終止時(shí)捕獲的進(jìn)程的工作虛擬內(nèi)存狀態(tài)的記錄。診斷核心轉(zhuǎn)儲(chǔ)通常用于確定應(yīng)用程序崩潰或意外行為的原因。

    傳統(tǒng)上,您在應(yīng)用程序崩潰時(shí)依靠操作系統(tǒng)來(lái)捕獲轉(zhuǎn)儲(chǔ)(例如Windows錯(cuò)誤報(bào)告),或者在滿(mǎn)足某些觸發(fā)條件時(shí)使用procdump之類(lèi)的工具來(lái)捕獲轉(zhuǎn)儲(chǔ)。

    迄今為止,在Linux上使用.NET捕獲轉(zhuǎn)儲(chǔ)的挑戰(zhàn)是使用NET捕獲轉(zhuǎn)儲(chǔ),gcore否則調(diào)試器會(huì)導(dǎo)致極大的轉(zhuǎn)儲(chǔ),因?yàn)楝F(xiàn)有工具不知道在.NET Core進(jìn)程中要修剪哪些虛擬內(nèi)存頁(yè)。

    此外,即使您已經(jīng)收集了這些轉(zhuǎn)儲(chǔ),也仍然需要分析調(diào)試器,因?yàn)樗枰@取調(diào)試器并將其配置為加載sos(.NET的調(diào)試器擴(kuò)展),這具有挑戰(zhàn)性。

    dotnet-dump

    3.0.0-preview5,我們引入了一個(gè)新工具,使您可以捕獲和分析Windows和Linux上的進(jìn)程轉(zhuǎn)儲(chǔ)。

    dotnet-dump?仍在積極開(kāi)發(fā)中,下表顯示了哪些操作系統(tǒng)當(dāng)前支持哪些功能。

    視窗OS X的Linux
    收集

    ?

    ?

    ?

    分析

    ?

    ?

    ?

    您可以通過(guò)運(yùn)行以下命令來(lái)安裝此.NET全局工具

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

    安裝完成后,您可以通過(guò)運(yùn)行以下命令來(lái)捕獲進(jìn)程轉(zhuǎn)儲(chǔ)dotnet?dump

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

    在Linux上,可以通過(guò)運(yùn)行以下命令加載結(jié)果轉(zhuǎn)儲(chǔ)來(lái)分析結(jié)果轉(zhuǎn)儲(chǔ)

    dotnet?dump?analyze?<dump-name>

    在下面的示例中,我嘗試通過(guò)遍歷堆來(lái)確定崩潰轉(zhuǎn)儲(chǔ)的ASP.NET Core宿主環(huán)境。

    有關(guān)如何使用此工具的詳細(xì)說(shuō)明,請(qǐng)參閱dotnet-dump自述文件。對(duì)于已知的dotnet-dump限制,請(qǐng)查看GitHub上的未解決問(wèn)題。

    總結(jié)

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

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。