2017-02-22 86 views
2

我懷疑WebJob中可能有內存泄漏,但我不確定如何明確證明我的工作。我懷疑我可以通過轉到Kudu管理控制檯中的/ processExplorer來找到信息,啓動配置文件並下載結果。但是,我不完全確定這是否是要走的路線,或者一旦獲得該文件,我應該如何處理該文件。如何診斷Azure Web工作中的內存泄漏

任何建議,將不勝感激。

回答

2

我可以找到在捻管理控制檯要去/ processExplorer的信息,啓動配置文件,並下載結果

後你得到.diagsession文件,你可以打開它視覺工作室。您將看到CPU使用趨勢,但內存數據不包含在此文件中。爲了方便識別是否有內存泄漏,下面的步驟供您參考。

  1. 手動和及時刷新kudu上的Process Explorer(例如每30秒一次)。
  2. 刷新進程資源管理器後,需要記錄將用於診斷內存泄漏的專用內存和虛擬內存。通過點擊進程名後面的屬性按鈕,您將看到當前進程的私有內存和虛擬內存。
  3. 完成記錄足夠的數據後,您需要比較虛擬內存和專用內存的增長速度。如果虛擬內存和私有內存的增長速度都很快,或者虛擬內存的增長速度比專用內存的增長速度快,則意味着存在內存泄漏。

如果您需要更多的內存泄漏信息,可以從Process Properties頁面下載內存轉儲文件,並使用WinDbg查看它的詳細信息。您還可以使用診斷即服務爲Azure網站在線分析轉儲文件。有關如何使用它的更多信息。以下鏈接供您參考。

DaaS – Diagnostics as a Service for Azure Web Sites

+0

我能使用的DaaS地看到,我有一大堆的被佔用資源孤立的線程。感謝您指出DaaS。 –

+0

@RobReagan你是如何確保Azure處理孤線的? – zgirod

+0

@zgirod,我們的問題是,我們正在根據每個請求的基礎從WebJob創建一個到Hub的新連接。當使用SignalR 2.2.0時,這導致連接和線程成爲孤立問題。我們在連續的WebJob中改變了我們的邏輯,因此我們只建立一次代理連接,然後重新使用該連接與我們的集線器交談。這解決了我們的問題。 –