2013-04-27 146 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