【问题标题】:Process started from azure worker role fails after a few minutes几分钟后,从 azure worker 角色启动的进程失败
【发布时间】:2012-12-18 16:14:27
【问题描述】:

我有一个 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();

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

【问题讨论】:

  • 您在工作人员角色的哪个部分调用此代码?
  • worker 角色每 60 秒检查一次队列(在 Run 方法中),如果有消息则启动此过程
  • 这里没有足够的信息来说明发生了什么问题,因此您应该尝试收集更多信息。如果程序有任何日志记录,请检查或配置它。还可以尝试检查 Windows 事件日志。如果程序将错误写入 StandardOutput 和/或 StandardError,那么也尝试捕获这些错误。 here 有一个很好的代码示例。

标签: azure azure-worker-roles


【解决方案1】:

我找到了问题。

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

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

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多