2013-04-27 33 views
1

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

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

我不熟悉这类问题,但我会想象有这样的技术在.NET中做这件事。我的网络服务器正在运行ASP.NET MVC4,让您了解我所针对的技术。

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

+0

BackgroundWorker的http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx但不知道,这将解决您的内存问题,因为它仍在运行Web应用程序。 – Paparazzi 2013-04-27 15:16:14

回答

2

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

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

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

这不是你能使用的唯一队列,我相信MS有一个为好。然后我们在云端建立了一个服务器,这个服务器比同一个队列中的小得多。一旦事件发生。它处理它,并...

  • 这是更快,因为没有IIS开销
  • 一个用户不影响其他用户的体验
  • 我可以创建两个较小的机器accoomplish我是什么试图做一个更大的。

HTH