2017-09-22 56 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

謝謝您的評論。內存轉儲問題是,我不知道什麼時候會發生崩潰,據我所知,內存轉儲只是一個快照。崩潰診斷器我肯定會讀,這個名字聽起來很有前途:) –