Dot-Net

.NET 生產程式碼分析工具

  • March 7, 2019

是否有任何 .NET 性能分析工具可以附加到正在執行的 Windows 服務並進行基本的堆棧呼叫採樣?如果該工具不需要安裝,那就太好了,因為我需要通過客戶的 IT 部門處理大量繁文縟節。

謝謝


性能問題的性質:這個有性能問題的程序作為 Windows 服務執行,它處理來自 200 多個移動設備的收入消息。通常,該程序每秒可以處理至少 10 條消息。不幸的是,在最近的升級之後,由於某些原因,該程序通常在早上 7 點左右不再能夠足夠快地處理消息。一條消息進來,它可能會在程序內部隊列中停留超過 10 分鐘,然後才能被處理。我們還注意到該程序使用的 CPU 高於正常 CPU。通常在八核機器上應該是 5%,現在是 20-25%。

該程序不僅僅處理傳入的消息,它還維護數據庫並向客戶端提供數據。它有五個執行緒處理傳入的消息,並且任何維護作業都在其 on 執行緒上執行。

目前的解決方法是在發生減速時重新啟動服務。重新啟動後,程序將再次正常執行(CPU 低於 5%)。直到第二天早上 7 點左右,它會再次發生。每次重新啟動後,隊列中的所有消息都被丟棄。通常早上 7 點和下午 5 點是我們收到大量消息的時間,但問題似乎只發生在早上 7 點。

我們的團隊嘗試使用模擬消息在內部重現該程序,並進行程式碼比較以查看是否存在任何關鍵瓶頸。

時間已經過去,還有另一個工具要列出:CodeTrack。無需安裝即可使用。

我不知道有哪些分析器可以在不安裝的情況下使用,因此您最終可能必須與客戶的 IT 部門達成某種協議。

但是,您可以通過查看 .NET 性能計數器獲得一些見解。也許該服務出於某種原因正在執行過多的垃圾收集。

如果這沒有產生任何線索,您可以使用 SysInternals 的 Process Explorer。它可以在沒有事先安裝的情況下執行。屬性視窗有一個執行緒,它將顯示程序中的所有執行緒以及它們的執行時間,這可能會有所幫助。

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