1

我有一个 Azure Worker Role,它生成另一个进程 (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();

程序启动、完成一些工作并意外结束。关于什么可能会扼杀这个过程的任何想法?

4

1 回答 1

4

我发现了问题。

重定向输出我已经看到应用程序由于“磁盘空间不足”而失败。错误,即使我有足够的磁盘空间。问题是应用程序在执行期间会创建临时文件,并且托管服务的临时目录会占用空间。我认为这个目录的最大大小为 100 MB。

解决方案是在服务定义中配置一个新的本地存储,并在 RoleEntryPoint.OnStart 方法( http://msdn.microsoft.com/en-us/library/windowsazure/)上将 TMP 和 TEMP 环境变量设置为这个本地存储hh134851.aspx)。

于 2012-12-20T08:50:15.403 回答