Rag*_*ock 5 entity-framework-core
我正在使用 Entity Framework Core 2.2,我决定关注一些博客 sugestion 并启用失败重试:
services.AddDbContext<MyDbContext>( options =>
options.UseSqlServer(Configurations["ConnectionString"]),
sqlServerOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: 10,
maxRetryDelay: TimeSpan.FromSeconds(5),
errorNumbersToAdd: null);
});
Run Code Online (Sandbox Code Playgroud)
我的问题是maxRetryDelay论据是什么?我希望它是重试之间的延迟时间,但这个名字暗示了它的最长时间,这是否意味着我可以间隔 1 秒进行 10 次重试,而不是我想要的间隔 5 秒?
重试之间的延迟随机化为由 指定的值maxRetryDelay。
这样做是为了避免同时发生多次重试并使服务器不堪重负。想象一下,例如,对 Web 服务的 10K 请求由于网络问题而失败,并在 15 秒后同时重试。数据库服务器会突然收到 15,000 次查询。
通过随机化延迟,重试分布在时间和客户端上。
每次重试的延迟由ExecutionStragegy.GetNextDelay计算。在源表示这是一个随机指数退避。
默认的SqlServerRetryingExecutionStrategy使用该实现。自定义重试策略可以使用不同的实现
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |