2010-10-20 66 views
4

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

我是應用程序分析的新手,所以請原諒我,如果我錯過了某些顯而易見的事情,或者沒有正確地思考這個問題。

感謝, 科瑞

回答

1
+0

最好創建一個臨時複製生產環境並在那裏測試 – abatishchev 2010-10-20 14:10:19

+0

我同意。但是,只要您小心,也可以測試開發計算機上的瓶頸。 – rboarman 2010-10-20 21:10:21

+0

我不同意。可以在臨時環境中複製環境,但不能複製行爲。一旦接收到來自接收100個請求的10個請求,站點就可能表現不同。例如,我有一個網站在我開發的考勤系統中接收生物識別設備的請求。當我在開發機器或分級機器上測試系統時,它的功能就像一個魅力,但是當它同時收到來自多個設備的請求時,我遇到了問題。爲了模擬人們和設備的真實行爲,它幾乎是一個新項目, – jstuardo 2017-11-17 11:58:39

1

我想這與長時間運行的數據庫查詢,而不是ASP.net應用程序本身的事情。根據我的經驗,這是我看到的9次,這使得應用程序服務器隨着資源消耗而下降,應用程序必須等待每個查詢完成才能繼續。查看數據庫服務器上的SQL profilier,看看是否有任何查詢需要很長時間才能執行。

它可能很簡單,只需向列中添加索引或其他小的次優化即可。一旦你知道這個查詢,你也可以回到你的代碼並調整該部分。

+0

那麼,SQL Server機器幾乎沒有做任何事情。 RAM和CPU以及數據庫服務器的整體性能都很好。所以我認爲這根本不是數據庫問題。 – 2010-10-20 14:10:39

2

您應該考慮在生產服務器遇到高CPU時採取內存轉儲。檢查出ADPlus並在asp.net進程上掛起轉儲。這可以用Windbg或其他工具進行分析。

我剛剛經歷了類似的經驗,我們的生產服務器出現了過多的CPU負載 - 我們無法在本地或在測試/臨時環境中重新創建場景。它與數據庫無關(數據庫CPU正常)。分析轉儲文件就是導致問題的原因(我們使用某個庫過度編譯正則表達式對象)。

如果沒有Tess' blog,這個答案將是不完整的,所以這裏是鏈接。

+0

嗯..是的,我們昨天做到了。但我不知道如何分析它。也許我只需要更多地瞭解ADPlus和Windbg,因爲我真的覺得我不知道自己在做什麼。謝謝。 – 2010-10-20 14:12:55

0

當然可以使用EQATEC Profiler來分析ASP.NET。請參閱:
Profiling ASP.NET websites with EQATEC Profiler

EQATEC探查儀器您在單獨的步驟,使應用程序本身的應用收集它自己的剖析信息,以及分析器,然後僅僅顯示計時數據之後。

這意味着您可以完全獨立於分析器本身運行您的插裝ASP.NET應用程序。 你可以例如測試您的應用程序,將其發送到您在印度的測試網站,讓他們在服務器上運行一段時間,在那裏它會自行生成計時報告,並讓他們將這些報告郵寄給您,然後您可以查看分析器。很簡約。

注意:要使配置文件應用程序生成「自己的」時間快照,它必須知道何時生成它們。默認情況下,這是在ASP.NET應用程序中調用Application_End方法的時候。您可以通過使用EQATEC Profiler API以編程方式在適合您的情況下轉儲快照。請參閱用戶指南或退出this thread

4

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

我的一個朋友分叉的代碼,使其在2015年的工作:

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

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

約偉大的事情這個工具(除了「不需要安裝」的可移植性,cmd-line接口等等),像NewRelic等APM軟件包只監視http請求。如果你的應用有一些後臺線程 - 他們不會有太大的幫助。

0

對於那些仍在困擾這個問題的人來說,這取決於你想要完成的事情。

如果一個服務器在CPU上運行的程度很高,那麼標準分析器會由於額外的開銷而使其停止運行。

實際上有三種不同類型的探查器。標準分析器,輕量級事務分析器和APM工具。你可以閱讀更多關於這在我的博客貼子,討論了所有3:

.NET Profilers: 3 types and why you need all of them

相關問題