2017-02-22 64 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中改变了我们的逻辑,因此我们只建立一次代理连接,然后重新使用该连接与我们的集线器交谈。这解决了我们的问题。 –