Azure 网站上的 Kudu 部署非常慢

Posted

技术标签:

【中文标题】Azure 网站上的 Kudu 部署非常慢【英文标题】:Very slow Kudu deployments on Azure Websites 【发布时间】:2015-02-20 23:24:44 【问题描述】:

我有一个自定义的deploy.cmd 文件,用于部署我的 Azure 网站。它会做一些自定义的事情,比如安装 Nodejs 版本的 Typescript 和一个 minifier,然后运行单元测试,然后再构建和部署网站本身。

我遇到的问题是,运行这个脚本似乎需要越来越长的时间,至少在 Azure 上是这样。在我的开发笔记本电脑上,运行deploy.cmd 脚本大约需要 90 秒。但是当我在 Azure 上推出它时,它需要 15-20 分钟才能运行(有时需要 30-40 分钟以上)。我对它在 Web 服务器上花费的时间更长并不感到惊讶 - 我am有点惊讶它花费了超过 10 倍的时间。

这是最近部署的日志文件的精简版本:

Command: deploy.cmd
18:54:16.89 - Starting deploy script
18:54:19.92 - Installing typescript
18:54:30.90 - Installing minifier
18:54:44.62 - Restoring Nuget Packages
18:55:48.25 - Building solution
18:59:09.12 - Building test projects
19:04:03.67 - Running Payboard.Common.Tests.dll
19:04:19.80 - Running Payboard.Model.Tests.dll
19:04:25.25 - Running Payboard.Services.Tests.dll
19:06:29.72 - Running Payboard.Integrations.Tests.dll
19:06:49.46 - Running Payboard.Web.Tests.dll
19:07:56.99 - Beginning KuduSync
19:08:03.16 - Finished successfully.

显然,大部分时间是两个构建步骤。我想我可以将它们合并到一个构建步骤中 - 尽管我不完全确定这将如何与 KuduSync 一起使用。

关于如何加快速度的任何其他建议?或者这基本上只是预期的?

【问题讨论】:

这是一个在免费、基本还是标准层上运行的网站?实例大小是多少?可能存在处理瓶颈。更多细节在这里:azure.microsoft.com/en-us/pricing/details/websites 标准单核。我会尝试将其提升为双核。 只是跟进。将“标准”实例的大小增加到双核似乎没有帮助。我上一次部署花了整整 30 分钟。 嗯。您是否有更多关于正在执行的“构建解决方案”步骤的详细信息? 我遇到了完全相同的问题,只需要 30-60 分钟! FML 【参考方案1】:

我怀疑提到 nodejs,有一堆 npm 包被下载作为构建的一部分。在您的本地计算机上,这些已经存在,但 Kudu 每次都将它们恢复到一个干净的文件夹中。

其次,大约 5 分钟的构建时间用于构建(并且可能正在运行)测试项目。除非在部署工作流程中有意和需要,否则我建议通过标志关闭。

【讨论】:

是的,azure 无法处理节点包的许多小文件。它的存储系统磁带驱动器速度很慢。【参考方案2】:

你在做build or a rebuild 吗?只有在需要时才会构建;无论如何,rebuild 都会构建一切。

此外,您可能正在部署发布版本与在本地编译和部署调试版本,并且可能需要更长时间的发布编译优化。 (如果是这种情况,请尝试在本地进行发布构建,看看时间是否匹配)

如果您在开始时正在执行诸如“清洁解决方案”之类的操作,请查看您的发布配置文件。

【讨论】:

以上是关于Azure 网站上的 Kudu 部署非常慢的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 在 Azure Kudu 部署期间运行 Gruntfile.js 作为构建的一部分

Azure Web App节点部署,更改应用程序根目录?

msbuild、dotnet sdks、azure、kudu等使用的环境变量列表

.net core 部署到 windows 2012 r2 服务器 发请求慢

如何调用部署在 azure 上的 WEB api 服务结构?

将 Simple Symfony 应用程序部署到 Azure:慢?