在Web服务器上运行内存密集型后台任务

时间:2013-04-27 14:23:22

标签: asp.net .net iis-7

我有一个Web应用程序,它是一个内存密集型多线程图像处理器的前端。当Web应用程序启动大型图像处理任务时,内存不足。

如何以不影响分配给Web应用程序的内存的方式(例如后台)运行这些任务?

我不熟悉这类问题,但我想在.NET中有一些技术可以做到这一点。我的Web服务器正在运行ASP.NET MVC4,让您了解我所针对的技术。

P.S。优化图像处理器不是一个问题,因为它的命令行界面工作正常。

1 个答案:

答案 0 :(得分:2)

嘿,我们遇到了类似的情况,用内存密集型任务加载你的网络服务器永远不是一个好主意。 Web服务器非常擅长提供网页,如果你要求它做更多的事情,你需要承担大量的开销(网络服务器)来做一些不需要网络服务器来完成的事情。

我们所做的是使用Redis设置一个消息队列,不确定这是一个确切的消息队列,因为您可能想要的功能与另一个不同,但这足以让您开始沿着这条路走。

https://github.com/ServiceStack/ServiceStack/wiki/Messaging-and-redis

这不是你可以使用的唯一队列,我相信MS也有一个。然后我们在云中设置一个服务器,这个服务器在同一个队列上监听的要小得多。一旦事件发生。它处理了它......

  • 它更快,因为没有IIS开销
  • 一位用户未影响其他用户的体验
  • 我可以创建两台较小的机器,以便用一个更大的机器来完成我的尝试。

HTH