c# - Azure App Servce 的 .Net Core 3.1 Web API 延迟问题
问题描述
我有一个基于 Asp.net core 2.1 Web API、Angular、Azure SQL Server DB、Entity Framework 2.1.4 的 Web 应用程序。该应用程序托管在 Azure AppService 中(请假设 URL 为“abctest.azurewebsites.net”)。我还配置了一个自定义域(将其称为“abctest.com”)。该应用程序运行良好,没有任何问题。
我尝试将这个“.net core 2.1” Web API 迁移到“.net core 3.1”。我还将我的 EF 版本从“2.1.4”升级到“2.2.6”。在本地环境中一切正常。但是在我将此构建发布到我的 Azure App 服务后,我遇到了如下所述的一些问题。
更新记录后,API 有一些延迟来返回结果
- 仅当我使用自定义域端点“abctest.com”时才会发生这种情况。但它没有抛出任何错误,而是获取旧记录(就在更新之前)。
- 即使我已经通过分析器检查了 DBs 调用,但我无法找到那些 DB 调用。但是大约 2-3 分钟后,我得到了这些记录,并且能够通过探查器查看数据库调用。
- 我还通过应用程序洞察检查了“<strong>request”,当我获取旧记录时,我无法在那里找到请求日志。看起来,它甚至没有从自定义域访问我的 Azure 应用程序服务站点。即使我们尝试将框架回滚到“.net core 2.1”,它仍然可以在相同的 AppService 和自定义域中正常工作。
直接的 azure 网站 URL(“abctest.azurewebsites.net”)不会发生此问题:它工作正常,没有任何问题。但是当应用程序在“.net Core 2.1”中运行时,它可以在 Azure 站点 URL 和自定义域 URL 中正常工作。
如果有人能够帮助解决这里的问题,那将非常有帮助。
解决方案
如果仅使用自定义域的性能(非常)差,则可能是 DNS 设置不正确,或者托管在(非常)慢的 DNS 主机上。当然,它可能完全是另外一回事。
以下几点可以帮助您确定问题:
- 检查您的 Web 应用程序中是否有任何逻辑可能被重试或等待通过域名连接到它时没有得到的响应。
- 检查 DNS 的速度,例如使用 Ultratools 的 DNS 速度测试。
DNS 托管速度工具将为您提供 DNS 树中每个级别的宝贵 DNS 性能信息,以帮助进行性能评估和性能故障排除。
从命令行运行它并查看有关如何访问您的域的信息:
nslookup 设置调试
考虑将 Cloudflare 之类的服务添加到您的网站。
保护和加速您的网站、应用程序和团队。
- 在您的自定义域上运行 webhint(或任何其他让您深入了解的工具)。
它不仅仅是性能:
webhint 是一个可定制的 linting 工具,可通过检查代码的最佳实践和常见错误来帮助您提高网站的可访问性、速度、跨浏览器兼容性等。
查看 rickvdbosch 的相同答案 -应用自定义域后 Azure 上的 Web 应用程序加载缓慢
推荐阅读
- javascript - 在常规 javascript 文件中使用 NPM 模块
- matplotlib - x 轴上的标签重叠
- vue.js - Vue-router 无法在新选项卡中绑定数据
- c++ - 我的包装函数缺少一个变量?
- android - 如何将 App Shortcuts 添加到 React Native 项目中
- javascript - 如何在 js 代码中单击按钮以执行功能
- flutter - 参数格式不正确 - 颤振运行
- python - 数据框中连续组之间的累积和
- php - PHP 如何排除包含在我包含的文件中的文件?
- javascript - 如何将文本从 div 解析为 JSON?