2017-09-22 53 views
0

我在他们的S3标准平台上运行Azure上的webjob,这意味着它有7 GB的RAM可用来运行我的应用程序。Webjob变得'System.OutOfMemoryException'

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

我尝试运行的工作是一项内存密集型工作,需要大约1,5 gb的ram,但根据下图我不明白这应该是一个问题,因为我从来没有超过2.2gb用于应用程序服务的ram。我不得不补充说,我运行了3个实例,所以可能是一个实例使用更多内存的方式,但我找不到任何地方查看这些信息。

Memory consumption on server

当我看到在工藤我看到我周围的RAM的1.3GB使用目前,这仍然远远低于作业所需的内存的进程资源管理器。

Kudo screenshot

作业已运行没有任何问题,不超过2天前在同一台服务器的设置,所以我完全失去了为去哪里找。

更新:代码在Visual Studio中运行相同的数据运行相同的确切任务很好。

不要任何人有想法,如何处理这个问题

+0

看一看这个答案:https://stackoverflow.com/questions/14186256/net-out-of-memory-exception-used-1-3gb-but-have-16gb-installed –

+0

非常相关,和我知道大多数数据类型的最大2GB限制。我使用xml和csv文件处理大小为500-700 MB的文件。该程序已运行了几个月没有任何问题,直到2天前,现在它不再运行一定的大小给我的内存异常。我在Visual Studio中测试了相同数据中的代码,并且它的工作原理应该如此 –

回答

0

好吧好吧好吧,首先你如何处理与垃圾收集器的?!我的意思是你在完成他们的任务后处理一次性物品。你说应用程序正在运行2天,似乎应用程序与更加密集的内存加载的东西发生冲突。正如你所说你的应用程序“内存密集型”,我想你应该把它取出来(源代码),并确保你正确地管理对象,因为垃圾回收器不能关心你所有的“源代码混乱”。祝你好运。

+0

我说这项工作就在两天前没有任何问题。我也在一个小时前在visual studio中用相同的数据运行同样的工作,没有任何问题。 我保持范围尽可能有限,并确保优化使用。当您获得500-700MB xml文件时,只需很难将开销保持在数据大小的两倍以下 –

0

根据我的理解,您可以捕获Azure应用服务中的内存转储,并分析转储以缩小此问题。您可以参考此tutorial关于如何在Azure应用程序服务中获取完整内存转储。此外,您可以利用崩溃诊断程序扩展来监视CPU和内存,有关更多详细信息,请参阅此blog

+0

谢谢您的评论。内存转储问题是,我不知道什么时候会发生崩溃,据我所知,内存转储只是一个快照。崩溃诊断器我肯定会读,这个名字听起来很有前途:) –