Asp.net

如何分析在生產伺服器上執行的 ASP.NET 應用程序?

  • August 15, 2021

我有一個 ASP.NET 應用程序,它始終在生產伺服器上使用 75% - 100% 的 CPU。如何分析應用程序以確定程式碼的哪一部分佔用了最多的 CPU?我查看了幾個不同的工具(Xte Profiler、EQATEC、dotTrace),但它們似乎都希望您在他們的工具中載入和執行應用程序。在我看來,他們希望您在他們的工具中載入應用程序並在本地(而不是在生產中)執行測試。我想在應用程序在生產中執行時對其進行概要分析,並讓人們點擊它以查看實際發生的情況。這可能嗎?

我是應用程序分析的新手,所以如果我遺漏了一些明顯的東西或沒有正確考慮這一點,請原諒我。

謝謝,科里

Sam Saffron(StackoverFlow 的創建者之一)不久前編寫了一個很棒的命令行工具,但不幸的是已經放棄了它。

我的一個朋友分叉了程式碼以使其在 2015 年工作:

https://github.com/jitbit/cpu-analyzer

(該頁面有一個連結到 Sam 的文章,解釋如何使用它)

這個工具的優點(除了“不需要安裝”的可移植性、命令行界面等)是像 NewRelic 等 APM 包只監控 http-requests。如果您的應用程序有一些後台執行緒 - 它們不會有太大幫助。

您應該考慮在生產伺服器遇到高 CPU 時對其進行記憶體轉儲。檢查ADPlus並在 asp.net 程序上進行掛起轉儲。然後可以使用Windbg或其他工具對其進行分析。

我剛剛經歷了類似的經歷,我們的生產伺服器遇到了過多的 CPU 負載——我們無法在本地或在測試/暫存環境中重新創建這種情況。與數據庫無關(數據庫CPU正常)。分析轉儲文件讓我們了解導致問題的原因(我們正在使用的某個庫對正則表達式對象的過度編譯)。

如果沒有Tess’ blog ,這個答案將是不完整的,所以這裡是連結。

引用自:https://stackoverflow.com/questions/3978566