gpt4 book ai didi

IIS 上的 ASP.NET Core 应用程序启动速度非常慢

转载 作者:行者123 更新时间:2023-12-03 21:36:33 30 4
gpt4 key购买 nike

我们正在通过 TeamCity 和 Octopus 部署我们新的 .NET Core Wep Api,它在 IIS 后面的 Kestrel 上运行。一切都很好,除了第一个请求需要大约 2 分钟。即部署后的第一个请求和在 IIS 上重新启动站点后的第一个请求。

发布我们使用的应用程序

dnvm use 1.0.0-rc1-update1 -a x64
dnu publish --configuration release --runtime active --no-source --include-symbols

同一 IIS 实例上的较旧应用程序需要大约 15 秒来响应第一个请求。
我们的 .NET Core 应用从部署到 IIS 的相同实际代码中纯粹在 Kestrel 上运行时大约 15 秒后响应。

剩下的 1 分 45 秒发生了什么 - 为什么要花这么长时间?

我们如何去调试这个?

更新:

事实证明,IIS 无法正常关闭 Kestrel 进程 (dnx.exe)。它因以下错误而崩溃:
Unhandled exception at 0x00000000776E298A (ntdll.dll) in w3wp.exe: 0xC000070A: Status 0x (parameters: 0xFFFFFFFFC0000008, 0x0000000000000324, 0x000000000167D930, 0x0000000000277520, 0x000007FEE60388F4).

如果我手动终止 dnx.exe 进程然后重新启动站点,它会启动得非常快,所以我的理论是 Octopus 部署步骤以某种方式遇到了相同的异常,并且 IIS 必须等待主机进程超时才能生成一个新的工作流程。

如何让 IIS 优雅地关闭 dnx 进程?如何从 IIS 获得更易于理解的异常?

最佳答案

问题的原因是 IIS 无法正常停止运行 Kestrel 的 dnx 进程,并且必须等待它超时才能运行正常的进程。

为了解决这个问题,我们添加了一个 PowerShell 脚本来手动停止 dnx 过程,作为 Octopus 部署过程的第一步:

Stop-Process -processname dnx -ErrorAction SilentlyContinue -Force

至于为什么 IIS 无法正常终止工作进程以及如何解决这个问题,我仍然不知道。

关于IIS 上的 ASP.NET Core 应用程序启动速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35158363/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com