问题标签 [resiliency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
944 浏览

kubernetes - 如何使用 Kubernetes 调试 OOMKilled 问题 / 为什么 traefik pod 关闭

我正在测试一个使用包装外部肥皂服务的服务的本地应用程序。

当我请求从 1 周内获取数据时,一切正常。

但是当我请求从 1 个月内获取数据时,我的 Web 服务器/反向代理会下降( traefik )

当我检查豆荚时,我得到:

上交所:

特雷菲克:

我已经用 Grafana 检查了每个容器的内存/CPU 使用率。我找不到任何异常活动的迹象。

这是内存使用的屏幕截图:

特拉菲克

SOAP 包装 API

在配置中,traefik 对资源没有限制。SGE 服务有以下限制:

我的虚拟机空闲时有 800 MB 的可用内存,所以这应该不是问题。

Traefik 为什么会倒下?我不明白发生了什么,我应该如何防止它。

任何想法 ???

0 投票
1 回答
139 浏览

amazon-web-services - Kinesis Producer 回调函数 - 保证交付?

每天向 Kinesis 流式传输数十亿条消息。

我们正在寻找一种实现方式,使我们能够以完全一次保证的方式向 Kinesis 传递消息。

我们的生产者框架要求流接收器是幂等的,以保证一次性交付,而 Kinesis 不是。因此,我们目前至少收到一次交货。(重复是可能的,我们确实看到了它们,当流式微批处理由于生产者端的任何原因必须重新启动时)

我们开始研究 Kinesis Producer Library (KPL)回调函数。基本上,我们将根据每条消息中存在的密钥跟踪 DynamoDB 中已传递的消息和未传递的消息的状态。如果我们知道已经发送了一条消息,我们将跳过它以重新尝试传递。然后似乎完全一次是可能的..有两个问题

1) 我们唯一的问题——我们失去回调函数调用的可能性有多大(例如网络故障等),或者回调函数本身失败了(例如我们遇到了 DynamoDB 限制/中断等)——是这记录在某处?我知道机会并不高,但我们想设计一个系统,能够对这些预期的事情有弹性。

2)时间。假设 Kinesis 出于某种原因延迟调用了回调函数(5-15 毫秒就足以打破上述回调函数中的一些假设,这些假设在 DynamoDB 中保持交付状态)。虽然我们还没有收到关于交付的确认,但我们的流媒体制作者框架已经尝试重新交付它认为尚未交付。这个潜在问题的任何解决方法?

附言。我们知道一种解决方法是在应用程序端(来自该 kinesis 流的接收器)进行重复数据删除,但这不在我们的项目范围内,我们很难要求恰好一次进入该 Kinesis 流。

0 投票
1 回答
970 浏览

hangfire - 使用 Hangfire(共享任务/对象)的多个服务实例,可能吗?

出于冗余原因,我需要使用相同的数据库运行同一服务的多个实例。

我发现了一些关于“Hangfire 多个实例”的问题,但与我的目的不同:通常是关于在同一数据库上为不同任务运行多个实例,或类似于此。

我需要知道当 2 个或更多 Hangfire 实例使用同一个数据库(我们想使用 MongoDB)时是否存在并发问题,以及这是否是使服务具有弹性的解决方案。
目标是让实例在另一个实例出现故障时处理所有工作。

任何建议都可以涵盖这种情况。

0 投票
1 回答
79 浏览

openshift - Chaos Toolkit 是否支持基于 CRI-O 的运行时?例如它可以在 OpenShift Container Platform v4.3 上运行吗?

请有人确认 Chaos Toolkit ( https://github.com/chaostoolkit ) 是否可以在 OpenShift Container Platform 4.3 版上运行?它基于 CRI-O 运行时。正如之前在 Gremlin、Ops-Monkey、Pumba 和 Litmus 上尝试过的那样,但它们似乎都不起作用,原因似乎是 CRI-O 运行时。是否有人可以确认 Chaos Toolkit 是否肯定可以在 OCP v4.3 上运行?并且还可以建议任何其他开源替代品吗?再次感谢。

问候,维杰

0 投票
1 回答
330 浏览

c# - WaitRetryForever 不适用于 Polly.Net Resiliency 中的自定义异常

我有以下RetryCircuit Breaker政策:

如果我使用自定义异常,则在记录以下内容后重试失败:

  • 断路器记录:断开电路 10000 毫秒!

如果我使用标准Exception类型,它工作正常。即使断路器打开,重试也会触发:

0 投票
1 回答
111 浏览

amazon-web-services - 使用 SQS 回退 DynamoDB

我们有一个同步 REST 端点,除了将项目保存到 DynamoDB 数据库之外,它还会进行其他处理,以供以后使用。

如果由于任何类型的异常导致数据库保存失败,则要求不出错。

我们如何处理整个区域中 dynamo db 出现故障的情况(罕见但可能)。发布到 SQS 并通过 ping 它(ListTables 或 ping)有一个单独的进程消耗并保存到 DynamoDB 是正确的模式吗?

我们应该退回到另一个区域还是发布到 SQS?是否值得使用resilience4j断路器模式?

0 投票
1 回答
243 浏览

amazon-s3 - 我们应该处理 lambda 容器崩溃吗?

阅读了很多关于 AWS Lambda 的错误处理的内容,但没有任何内容涉及正在运行的 Lambda 容器刚刚崩溃的主题。

这是一种可能性,因为它看起来像吗?我正在使用 Lambdas 构建一个事件驱动的系统,由文件上传到 S3 触发,我不确定如果 lambda 已经死亡,我是否应该在逻辑中构建拾取处理。

例如,在 S3 上创建文件对象 -> S3 通知 Lambda 事件 -> Lambda 实例在它可以开始处理之前发生崩溃 -> 事件现在永远消失了*(假设这里,我不确定这是否是真的,但可以'找不到任何相反的说法)。

我正在讨论构建逻辑以协调 S3 上的内容和每天处理的内容,以便我可以检测到 Lambda 死亡(死亡并且无法向 DLQ 写入故障)的(尽管很少见)场景,我们需要处理这些文件。这值得吗?S3 会以某种方式知道 lambda 已死并且需要将事件放在它自己的 DLQ 上吗?

0 投票
0 回答
198 浏览

c# - C# Polly 带回退的轮换策略

我正在使用 Flurl 创建多个 HTTP 客户端,每个客户端调用不同的端点,每个客户端的响应返回一个通用数据模型。我想创建一个 polly 政策:

  1. 每个请求在每个 HTTP 客户端之间轮换以分配负载
  2. 如果特定 HTTP 客户端失败太多次,则触发断路器并将其从轮换中删除,发送带有错误的松弛消息
  3. 其余的 HTTP 客户端继续轮换请求。

我正在使用 .net core 和服务容器来设置策略注册表,我很好奇这会是什么样子?我没有看到任何与轮换政策相关的内容。

0 投票
1 回答
144 浏览

c# - 从 Polly 基础知识开始

我对 Polly 很陌生,我试图从最基础的开始了解它是如何工作的。

为了测试重试次数,我尝试创建一个有 33% 的代码(打印)以生成 DivideByZeroException。生成错误时,它会上升到 policy.Execute 似乎不由 Polly 管理。

有人可以帮我调整这段代码吗?我正在使用 .Net Framework 4.7.2。

0 投票
1 回答
80 浏览

c# - 如何在 EF Core 中具有范围 Dbcontext 时实现数据库弹性?

根据 CQRS 模式,我有一个简单的命令,如下所示:

_context.SaveChanges()现在我有一个要求,如果它因异常而失败,则最多尝试5 次。为此,我可以简单地在方法中有一个 for 循环:

要求是将方法作为一个单元执行。问题是,一旦_context.SaveChanges()抛出异常,_context就不能用同样的方法重新尝试逻辑。文档说:

丢弃当前的 DbContext。创建一个新的 DbContext 并从数据库中恢复应用程序的状态。通知用户上一个操作可能没有成功完成。

但是,在 中Startup.cs,我有AppDbContextas 范围的依赖项。为了重新尝试方法逻辑,我需要一个新的实例,AppDbContext但被注册为作用域将不允许这样做。

我想到的一种解决方案是制作AppDbContext瞬态。但我有一种感觉,通过这样做,我将为自己打开一整套新问题。有人可以帮我吗?