- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的 Azure 功能已开始返回 502 Bad Gateways,但并非所有调用都返回。我没有使用“间歇性”这个词,因为它总是进行相同类型的调用,但现在总是使用相同的数据。
常规配置
AF 公开的 API 非常简单
我们有一个包含 1200 次调用的测试脚本,尝试添加、检查和删除我们的所有模型和各种错误场景。这些测试使用 Postman 运行,并在 Azure Dev Ops 中运行,但如果我从本地 Postman 代理运行,问题仍然存在。返回 502 的调用是 GET,有时是第一次调用,有时是第三次或第四次调用。
我对 AF 进行了一些更改,为迁移到函数运行时 4 做准备。它们围绕依赖注入(inject)以及从函数中的静态方法迁移到非静态方法。
在测试运行期间,我确实在 App Insights 中看到了条目,但从未看到返回 502 的调用。
如果我针对上次推送到生产环境的代码运行测试,这些 502 就不会发生
最佳答案
TLDR;
这归因于两个错误的组合
更详细
我们想在其中一个函数的处理结束时调用 WebApi。该 api 的基本 uri 需要可配置,并且在服务中我从配置中读取并构建 System.Uri
string azureAdClientId = Environment.GetEnvironmentVariable("AzureAd__ClientId", EnvironmentVariableTarget.Process);
string azureAdInstance = Environment.GetEnvironmentVariable("AzureAd__Instance", EnvironmentVariableTarget.Process);
string azureAdTenantId = Environment.GetEnvironmentVariable("AzureAd__TenantId", EnvironmentVariableTarget.Process);
string azureAdClientSecret = Environment.GetEnvironmentVariable("AzureAd__ClientSecret", EnvironmentVariableTarget.Process);
string uri = $"{azureAdInstance}{azureAdTenantId}/";
Uri authorityUri = new System.Uri(uri);
var app = ConfidentialClientApplicationBuilder.Create(azureAdClientId)
.WithClientSecret(azureAdClientSecret)
.WithAuthority(authorityUri)
.Build();
“AzureAd__Instance”设置在我们的 ARM 模板中命名不正确,因此 azureAdInstance 为 null,这意味着传递到 System.Uri 时的 uri
无效并会引发异常。
在正常情况下,这个异常会被捕获并记录下来,我会相对较快地解决这个问题。
但是,我使用“Fire & Forget”方法调用 WebApi,为此我滥用了异步/等待功能并调用以下方法,而无需等待它。请注意异步但没有任务返回,并且没有等待它。
public async void RequestSignalRecalc(Guid patientId, string clientTzo)
{
await this.PrepareAuthenticatedClient();
dynamic bodyObject = new ExpandoObject();
bodyObject.clientTZO = clientTzo;
string json = Newtonsoft.Json.JsonConvert.SerializeObject(bodyObject);
StringContent bodyContent = new StringContent(json, Encoding.UTF8, "application/json");
Task task = this.httpClient.PutAsync($"{this.signalApiBaseAddress}v1/patients/{patientId}/recalc", bodyContent);
}
比我聪明得多的人告诉我这是一个愚蠢的想法,但我还是这么做了,请参阅 FireAndForget call to WebApi from Azure Function 上的评论
正如问题部分中提到的,当调用因 502 失败而导致难以诊断时,Appinsights 中没有日志。我终于通过 Azure 门户中的 Kudu 工具找到了一些日志记录。请参阅高级工具 -> 工具 -> 诊断转储。这给了我一个包含 eventlog.xml 的 zip 文件。这显示了以下事件(我已经删除了其中的大部分)
1032 CoreCLR Version: 4.700.22.55902 .NET CoreVersion: 3.1.32 Description: The process was terminated due to anunhandled exception. Exception Info: System.UriFormatException:Invalid URI: The format of the URI could not be determined. atSystem.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)at System.Uri..ctor(String uriString) [OurCode] atSystem.Threading.Tasks.Task.<>c.<ThrowAsync>b__139_1(Objectstate) atSystem.Threading.QueueUserWorkItemCallback.<>c.<.cctor>b__6_0(QueueUserWorkItemCallbackquwi) atSystem.Threading.ExecutionContext.RunForThreadPoolUnsafe[TState](ExecutionContextexecutionContext, Action`1 callback, TState& state) atSystem.Threading.QueueUserWorkItemCallback.Execute() atSystem.Threading.ThreadPoolWorkQueue.Dispatch() atSystem.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
关键部分是异常信息、调用堆栈和“进程已终止”行,我假设这就是我从未将日志写入 App Insights 的原因。我不知道为什么它会导致 502,但我已经停止尝试做廉价和肮脏的火灾并忘记了。
这个故事的寓意是,如果聪明有经验的人建议你正在做的事情是一个坏主意,请认真考虑不这样做:-)
关于Azure函数应用程序间歇性返回502 Bad Gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75648648/
似乎有很多方法可以在 Azure 中自动使用 PowerShell。由于 ARM 模板是最新的,Azure 中的其他 PowerShell 选项是否已过时?这些工具/脚本之间有什么区别: Azure
我正在开发一个将托管在 Azure 中的 Web API。我想使用 Azure 诊断将错误记录到 Azure 表存储中。在经典门户中,我可以将日志配置为转到 Azure 表存储。 Classic Po
Azure 文件存储事件可以触发 Azure WebJob 或 Azure Function 吗? 例如,在文件夹“/todo/”中创建文件时。 最佳答案 我们目前没有任何 Azure 文件绑定(bi
我需要创建一个逻辑应用程序,我的要求是,我需要从 azure data Lake Gen2 文件夹迁移 json 文件,并根据某些值需要将该 json 转换为 xml,然后将其发送到 SQL。 因此,
我使用 VS Code 创建了 1 个 node.js 和 1 个 java Azure Function 当我使用 VS Code 将这两个函数部署到 Azure 时,我最终获得了这么多 Azure
收集 Azure 诊断数据时,暂存槽是否也会将诊断数据发送到 WadPerformanceCounters 表? 如果是这样,我该如何关闭它?或者在阅读诊断信息时如何区分暂存/生产。 我不想显示有关我
您好,我是 Azure 的新手。我有 VS 2012 和 Azure SDK 2.1,当我使用模拟器运行我的 Web 应用程序时一切正常。但是当我在 azure 上部署时出现错误消息: Could n
我很难区分 Azure 订阅和 Azure 租户有何不同?我尝试使用示例来弄清楚,但每次我得出的结论是它们在某种程度上是相同的?如果租户是组织在注册 Microsoft 云服务时接收并拥有的 Azur
如果我想在 Azure Insights 中设置自定义指标集合,并以(近)实时的方式可视化其中一些指标,并查看聚合的历史数据,我应该使用 Azure Metrics Explorer 还是 Azure
我想了解具有以下配置的 Azure 数据工厂 (ADF) 的现实示例/用例: Azure 集成运行时 (AIR) 默认值 自托管集成运行时(SHIR) 其他问题: 这两种配置(AIR 和 SHIR)是
请参阅下面来自 Azure 服务总线的指标。想要识别请求数量中的背景噪音|流量较低时的响应。假设振荡请求| session 中 amqp 握手的响应是潜在的。只是不明白这是什么类型的握手?从总线接收的
此问题与 Azure 事件中心和 Azure 服务总线之间的区别无关。 问题如下: 如果您将Azure Events Hub添加到您的应用程序中,那么您会注意到它依赖于Azure Service Bu
这两个事情是完全不同的,还是它们能完成的事情大致相同/相似? 最佳答案 Azure 辅助角色是“应用程序场”中您自己的一组虚拟机。您可以以分布式方式在它们上运行任何代码。通常,您编写业务代码以在这些服
我目前正在使用 Windows Azure 虚拟机来运行 RStudio, 我的虚拟机是 Windows Server R2 2012,它是 Azure 上的一项附加服务。 我还有一个 Azure 存
我们正在寻找托管一个网站(一些 css、js、一个 html 文件,但不是 aspx、一个通用处理程序)。 我们部署为: 1) Azure 网站 2) Azure 云服务 两种解决方案都有效。但有一个
我想从 Azure 表创建 blob。 AzCopy 支持此功能,但我找不到任何说明数据移动 API 也支持它的文档。此选项可用吗? https://azure.microsoft.com/en-us
This article表示 Azure 订阅所有者有权访问订阅中的所有资源。但是,要访问 Azure 数据库,必须是数据库中的用户,或者是 Azure Admin AD 组的成员。 无论 SQL 安
我尝试使用以下代码将 XML 文件上传到 Azure FTP 服务器: https://www.c-sharpcorner.com/article/upload-and-download-files-
除了 Azure 服务总线使用主题而 Azure 事件中心基于事件 - Azure 事件中心和 Azure 服务总线之间是否有任何根本区别? 对我来说,事件和消息之间没有真正的区别,因为两者只是不同类
我有一个通过虚拟网络网关连接到 Azure 虚拟网络的 Windows VPN 客户端。目标#1 是使用其内部 IP 地址连接到我的虚拟机。这有效。 第二个目标是使用其内部计算机名称进行连接(因为 I
我是一名优秀的程序员,十分优秀!