0

我的网络作业做的很少,它会下载大约 3kb 的数据,然后更新我数据库中的一些信息。然而,在 webjob 启动之后,当它正在下载信息时(或刚刚),抛出异常

[07/27/2014 00:12:47 > b2b30d: ERR ] Unhandled Exception: OutOfMemoryException.

任何想法为什么会这样?

我已经使用完全相同的数据在本地运行 exe,它使用的内存最少,我看到最多 65mb,但我认为这不足以导致异常(或者 webjobs 有限制吗?)

我的内存使用统计(在 Azure 仪表板上)显示 512 MB / 小时的 54%(似乎我使用了很多,但仍然有很多可用)。文件系统存储 1024 MB 的 9% 我正在使用共享主机计划模式。

数据库在引发异常之前未命中,因此这不是数据库问题。

更新 - 使用 System.Diagnostic 在 Azure 上的诊断信息

[07/28/2014 09:07:19 > b2b30d: INFO] WorkingSet64:10.54297
[07/28/2014 09:07:19 > b2b30d: INFO] TotalPhysicalMemory:14335.55
[07/28/2014 09:07:19 > b2b30d: INFO] AvailablePhysicalMemory:8458.691
[07/28/2014 09:07:20 > b2b30d: INFO] OutOfMemoryException
[07/28/2014 09:07:20 > b2b30d: INFO] WorkingSet64:41.33594
[07/28/2014 09:07:20 > b2b30d: INFO] TotalPhysicalMemory:14335.55
[07/28/2014 09:07:21 > b2b30d: INFO] AvailablePhysicalMemory:8443.027

因此,我的程序启动并使用 10mb,做了一些工作,然后抛出了 outofmemoryexception,在抛出 outofmemoryexception 的那一点,内存增加到了 41mb。我不会认为使用 41mb 的 exe 对 webjob 来说太多了,为什么会发生这种情况?

4

2 回答 2

1

修改 Batch Size 属性如下

    JobHostConfiguration config = new JobHostConfiguration();
//This asserts that the number of parallel calls of the function is one
     config.Queues.BatchSize = 1;
     var host = new JobHost(config);
// The following code ensures that the WebJob will be running continuously
     host.RunAndBlock();

通过这样做,您的网络作业的每个实例一次调用一次主函数,而不是并行调用。祝你好运!

于 2016-06-22T08:11:07.510 回答
0

这个博客似乎暗示

“虽然您可以在免费或共享网站中尝试连续工作,但它只能在设置了“始终在线”设置的标准网站中正常工作,这是因为在免费/共享网站中,工作流程将在之后停止大约 20 分钟没有对它的请求(对作业进程的请求可以是检查当前作业的状态)。

http://blog.amitapple.com/post/73574681678/git-deploy-console-app/#.VA7TEmcXJ3V

于 2014-09-09T10:15:38.527 回答