尽管重试切换,MSDeploy到Azure站点仍然经常失败

时间:2016-05-10 15:29:18

标签: azure azure-web-sites msdeploy

我们使用msdeploy.exe和预构建的软件包对Azure进行了大量部署。我们经常间歇性地(但显然是网络问题)经常发生故障。

命令是,

C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe
    -verb:sync -source:package=D:\packages\mysite.zip 
    -dest:auto,ComputerName=https://mysite-staging.scm.azurewebsites.net:443/msdeploy.axd?site=mysite__staging,UserName='$mysite__staging',Password='longpassword',AuthType='Basic'
    -retryAttempts:10
    -retryInterval:3000
    -setParam:name='foo1',value='bar1'
    -enableRule:AppOffline
    -setParam:name='foo2',value='bar2'
    -allowUntrusted=True

它通常可以正常工作,但有时它会因此消息而失败:

 Error Code: ERROR_CONNECTION_TERMINATED

-retryAttempts-retryInterval选项似乎没有效果。错误发生在我添加它们之前,现在添加它们之后,没有区别。 msdeploy没有输出说它正在重试。 在让msdpeloy重试时,我有什么遗漏?

所有内容(包括运行msdeploy的计算机)都托管在Azure的同一区域中。没有任何潜在的网络问题,特别是30,000毫秒的问题 - SCM / Kudu或msdeploy在更高层失败。

2 个答案:

答案 0 :(得分:1)

对我来说,这个问题有时是因为小提琴手和(更常见的)因为互联网速度慢而发生的。

此外,您可以尝试使用Kudu命令,例如msdeploy和SCM_COMMAND_IDLE_TIMEOUT的扩展名,您可以设置=>网络应用设置=> app settings =>添加具有所需值的设置(例如360(以秒为单位))。 Reference。它说任何外部命令都会在一段时间后被杀死,所以它可能是相关的。

答案 1 :(得分:1)

我也遇到过这个问题,并在内部向MS发布了一个问题。

我拥有的一个技巧是"热身"运行msdeploy之前的站点。这可以像powershell命令一样简单,以调用站点URL上的webrequest。出于某种原因,这减少了连接终止错误的数量。