Webjob得到'System.OutOfMemoryException'

时间:2017-09-22 11:10:01

标签: c# azure memory webjob

我在他们的S3标准平台上运行Azure上的webjob,这意味着它有7 GB的ram可用于运行我的应用程序。

在机器上3个作业正在运行,其中一个是执行所有处理的作业,另外两个处理小任务。我的问题在于,我在某些内存密集的大型任务中获得了内存异常,这意味着导致给定的作业崩溃。

我尝试运行的工作是一项内存密集型工作,需要大约1.5 gb的ram,但根据下图,我不明白这应该是一个什么问题,因为我从来没有超过2.2gb的用ram作为app服务。我必须补充一点,我运行了3个实例,因此可能是一个实例使用了更多的内存,但我无法在任何地方查找该信息。

Memory consumption on server

当我查看Kudo中的进程资源管理器时,我发现我目前使用大约1.3gb的ram,这仍然低于工作所需的内存。

Kudo screenshot

在相同的服务器设置上,作业在不超过2天前运行没有任何问题,所以我完全迷失了在哪里看。

更新:代码在visual studio中工作正常,相同的数据运行相同的任务。

有没有人知道如何解决这个问题

2 个答案:

答案 0 :(得分:0)

根据我的理解,您可以捕获azure应用服务中的内存转储并分析转储以缩小此问题。您可以参考此tutorial,了解如何在Azure App Services中获取完整内存转储。此外,您可以利用 Crash Diagnoser 扩展来监控CPU和内存,有关详细信息,请参阅此blog

答案 1 :(得分:-1)

首先,你如何处理垃圾收集器?我的意思是你在他们完成任务后处理一次性物品。你说应用程序运行了2天,似乎应用程序与更密集的内存加载冲突发生冲突。正如你所说,你的应用程序是非常耗费内存的#34; ,我想你应该把它拿出来(源代码),并确保你正确管理对象,因为垃圾收集器无法关心你所有的源代码混乱"。祝好运。