2012-12-18 37 views
1

我有一個Azure工作者角色,它產生了用於在虛擬機中執行* .exe文件的另一個進程(System.Diagnostics.Process)。幾分鐘後從azure worker角色啓動的進程失敗

問題是幾分鐘後執行失敗,沒有任何異常。

我試圖登錄到虛擬機,並從命令行啓動可執行文件,它工作正常。

可執行文件是一個Fortran程序,用於分配將在執行開始時使用的所有內存。

這裏是啓動過程的代碼:

Process p = new Process(); 

ProcessStartInfo startInfo = new ProcessStartInfo(strPath, strArguments); 

startInfo.WorkingDirectory = strDir; 

p.StartInfo = startInfo; 

p.Start(); 

p.WaitForExit(); 

程序啓動時,做了一些工作,意外結束。任何想法可能會殺死這個過程?

+0

您的工作者角色的哪部分是您調用此代碼? – knightpfhor

+0

工作角色每60秒檢查一次隊列(在Run方法中),並且如果有消息它會啓動此過程 –

+1

沒有足夠的信息說明發生了什麼問題,因此您應該嘗試收集更多信息。如果程序中有任何日誌記錄,請檢查或配置它。也請嘗試檢查Windows事件日誌。如果程序將錯誤寫入StandardOutput和/或StandardError,那麼嘗試捕獲這些錯誤。有一個很好的代碼示例[這裏](http://stackoverflow.com/a/7608823/76263)。 –

回答

4

我發現了這個問題。

重定向輸出我能夠看到由於「磁盤空間不足」而導致應用程序失敗。錯誤,即使我有足夠的磁盤空間。問題在於應用程序在其執行期間創建臨時文件,而託管服務的臨時目錄運行的是空間。我認爲這個目錄的最大大小爲100 MB。

解決方法是在服務定義中配置新的本地存儲,並在RoleEntryPoint.OnStart方法(http://msdn.microsoft.com/en-us/library/windowsazure/hh134851.aspx)上將TMP和TEMP環境變量設置爲此本地存儲。

相關問題