我有一个Azure辅助角色,它生成另一个进程(System.Diagnostics.Process),用于在虚拟机中执行* .exe文件。
问题是几分钟后执行失败而没有任何异常。
我尝试登录虚拟机并从命令行启动可执行文件,它运行正常。
可执行文件是一个Fortran程序,它分配将在执行开始时使用的所有内存。
以下是启动流程的代码:
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo(strPath, strArguments);
startInfo.WorkingDirectory = strDir;
p.StartInfo = startInfo;
p.Start();
p.WaitForExit();
程序启动,做一些工作并意外结束。关于什么可能会杀死这个过程的任何想法?
答案 0 :(得分:4)
我发现了问题。
重定向输出我已经能够看到应用程序因“磁盘空间不足”而失败。错误,即使我有足够的磁盘空间。问题是应用程序在执行期间创建临时文件,托管服务的临时目录运行空间。我认为这个目录的最大大小为100 MB。
解决方案是在服务定义中配置新的本地存储,并在RoleEntryPoint.OnStart方法(http://msdn.microsoft.com/en-us/library/windowsazure/hh134851.aspx)上将TMP和TEMP环境变量设置为此本地存储。