【问题标题】:How to restart Azure Web App farm instance VM如何重新启动 Azure Web 应用场实例 VM
【发布时间】:2015-11-23 15:09:57
【问题描述】:

有没有办法简单地重新启动站点所在的虚拟机?

今天遇到一个问题,git 将代码更改部署到我们的网站导致:

D:\home\site\repository\packages\Microsoft.Net.Compilers.1.0.0\tools\Microsoft.CSharp.Core.targets(67,5): error MSB6006: "csc.exe" exited with code -1073741819. [D:\home\site\repository\Foo\Bar.csproj]

最终在 Kudu/SCM 站点 Process Explorer 中杀死 VBCSCompiler.exe 并从门户发出重新部署后,导致部署成功......但随后站点无法正确启动:在 EventLog.xml 中有

HttpCompileException: External component has thrown an exception.
   at System.Web.Compilation.AssemblyBuilder.Compile()
   at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
   at System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)
   at System.Web.Compilation.BuildManager.CompileGlobalAsax()
   at System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

所以一些非常基本的东西不适合环境。

修复它的唯一方法是在门户中选择不同的应用服务计划/定价层,这似乎导致网站在新 VM 中旋转(我们注意到 %COMPUTERNAME%更改)。

有没有比每次发生这种情况时在不同定价层之间随机交换更好的方法来获取新的 VM 实例?

【问题讨论】:

    标签: azure azure-web-app-service kudu


    【解决方案1】:

    您可以尝试直接从 Web 应用管理刀片上的 Azure 门户重新启动站点。

    【讨论】:

    • 还尝试停止然后启动,这实际上会重新启动 w3wp。我认为重新启动会回收应用程序池或其他不同的东西。
    • 我想我尝试了重启。测试站点上的 Stop+Start 似乎确实会导致“更全面”的重新启动,因为该站点在超过一分钟后不可用,并且 w3wp.exe 确实以新的 PID 结束。下次可以试试。
    • 我认为你有这个倒退。重新启动会导致比停止/启动更深的重新启动,包括清理所有临时文件。此外,停止/启动不会影响 scm 站点,因此它不会帮助处理与 Kudu 相关的任何事情。
    • 啊,谢谢大卫,我可能有点仓促,因为从门户发布重新启动和站点回收之间似乎存在延迟。如果它再次发生,我会尝试这个 - 希望如果我们将来再次遇到这些问题会有所帮助。
    【解决方案2】:

    你已经有了所有的答案,但总结一下:

    您无法直接重新启动运行站点的虚拟机。但是你可以做两件事:

    1. 扩大和缩小您的网站。这会导致您的网站被移动到一个随机的虚拟机中
    2. 停止并启动您的站点。这将重新启动 w3wp 进程,而不是重新启动 VM。在同一虚拟机上运行的任何其他网站都不会受到影响。

    【讨论】: