标签: throttling

检测 SQL Azure 是否在节流

我有一个 Azure 辅助角色,可将一批记录插入到表中。昨天,插入记录最多需要 5 分钟,但今天已经花了几个小时。我怀疑该过程受到限制,但我没有得到任何例外。如果您受到限制,SQL Azure 是否总是返回错误,或者是否有另一种方法来检测您是否受到限制?

throttling azure azure-sql-database

5
推荐指数
1
解决办法
3319
查看次数

如何使用 Azure 数据库模拟暂时性错误?

我正在使用瞬态故障处理应用程序块 (TFHAB) 来定义与 Azure 数据库交互时的重试策略。我想知道是否有一种方法可以调用限制响应来规划和处理可能的生产场景?

我可以将 SQL 命令放入循环中并运行它,直到调用响应为止,但是这可能不被认为是“最佳实践”?

谁能建议一些实用的方法来测试我的瞬态错误处理逻辑?

error-handling throttling azure azure-sql-database

5
推荐指数
1
解决办法
2860
查看次数

Powershell Throttle 通过作业完成进行多线程作业

我发现的所有图都使用预定义的睡眠时间来限制工作。我需要节流阀等到一项工作完成后再开始一项新工作。一次只能运行 4 个作业。

因此,脚本将运行 4 个,当前暂停 10 秒,然后运行其余部分。我想要的是脚本一次只允许运行 4 个作业,并且当一项作业完成时,就会启动一个新作业。

作业是通过服务器名称列表初始化的。

这个可以存档吗?

$servers = Get-Content "C:\temp\flashfilestore\serverlist.txt"

$scriptBlock = { #DO STUFF }


$MaxThreads = 4

foreach($server in $servers) {
     Start-Job -ScriptBlock $scriptBlock -argumentlist  $server 
     While($(Get-Job -State 'Running').Count -ge $MaxThreads) {
          sleep 10 #Need this to wait until a job is complete and kick off a new one.
     }
}
Get-Job | Wait-Job | Receive-Job
Run Code Online (Sandbox Code Playgroud)

powershell multithreading throttling

5
推荐指数
1
解决办法
2万
查看次数

在 system.net 中增加“maxconnection”设置有什么缺点吗?

我们的系统存在 WCF 连接受限的问题,此答案已解决。我们将此设置添加到客户端的 web.config 中,并且两个并发连接的限制消失了:

除了明显的影响(例如服务器超载)之外,将此限制设置为比默认“2”高的数字(可能很多)是否有任何不利之处?任何关于默认值如此低的原因的来源?

c# asp.net throttling http

5
推荐指数
1
解决办法
1871
查看次数

如何处理对请求进行速率限制的api?

对于小型应用程序来说,它们没有问题。

但对于有流量的应用程序,您很容易就会达到限制。

Http 协议是 req-res 驱动的。仅仅因为您的后端受到限制,您就迫不及待地发送响应,直到速率限制允许您恢复进行 api 调用。

你做什么工作?

我可以想到几种场景:

等待它:虽然它很糟糕,但有时很容易修复,因为您不需要做任何事情。

将其排队:与仅进行 api 调用相比,这需要大量工作。这要求首先将其存储在数据库中,然后让后台任务通过数据库并执行任务。用户还会被告知“正在处理”而不是“已完成”

使用大量 api:非常 hacky...并且管理起来很麻烦。假设您正在使用亚马逊,现在您必须创建、验证、确认 10 个帐户。甚至对于需要用域名进行验证的地方也是不可能的。因为亚马逊会知道帐户 abc 已经拥有它。

architecture throttling api-design node.js

5
推荐指数
1
解决办法
1万
查看次数

Django REST 如何设置节流期以在 10 分钟内允许一个请求?

文档说该期间应该是以下之一:('s', 'sec', 'm', 'min', 'h', 'hour', 'd', 'day')。我很好奇我是否可以将期间设置为类似的1/10min

python django throttling django-rest-framework

5
推荐指数
1
解决办法
1105
查看次数

用于租户隔离的 API 流量整形/节流策略

我将通过提供一些关于我们正在做什么和我们面临的问题的背景来开始我的问题。

  • 我们目前正在构建一个 SaaS(托管在 Amazon AWS 上),它由位于 API 网关(我们正在使用 Kong)后面的几个微服务组成。
  • 网关处理身份验证(通过具有 API 密钥的消费者)并公开我提到的这些微服务的 API,所有这些都是无状态的(没有会话、cookie 或类似的东西)。
  • 每项服务都使用 ECS 服务(在一台或多台 EC2 机器上运行的每个服务一个或多个 docker 容器)进行部署,并使用 Amazon Application Load Balancer (ALB) 进行负载平衡。
  • 所有租户(客户端)共享相同的环境,即完全相同的机器和资源。鉴于我们的商业模式,我们预计只有少数“大”租户(起初)。
  • 大多数对这些服务的请求在请求期间转化为大量资源使用(主要是 CPU)。处理一个请求所需的时间在 2-10 秒范围内(而不是像传统的“类网络”应用程序那样的毫秒)。这意味着我们每分钟处理的请求相对较少,每个请求都需要一段时间来处理(后台或批处理不是一种选择)。

目前,我们没有限制或限制租户在给定时间段内可以发出的请求数量的策略。考虑到上面的最后两个考虑因素,很容易看出这是一个问题,因为租户提出的请求超出我们的处理能力几乎是微不足道的,从而导致服务质量下降(即使对于其他租户也是如此)共享资源方法)。

我们正在考虑限制/节流或一般准备系统以“隔离”租户的策略,因此一个租户不能通过发出超出我们处理能力的更多请求来降低其他租户的性能:

  • 速率限制:定义租户可以发出的最大请求数/米。如果有更多请求到达,则丢弃它们。Kong 甚至有一个插件。遗憾的是,我们使用“按请求付费”的定价模型,而企业不允许我们使用这种策略,因为我们希望为尽可能多的请求提供服务,以便为它们付费。如果多余的请求需要更多的时间给租户,那很好。
  • 租户隔离:为每个租户创建一个隔离的环境。这个也被丢弃了,因为它使维护变得更加困难并导致资源使用率降低和成本增加。
  • 自动缩放:调出更多机器来吸收爆发。根据我们的经验,Amazon ECS 在这方面做得不是很快,当这些新机器准备好时,可能已经太晚了。
  • 请求“节流”:在 API 网关级别使用 Leaky Bucket 或 Token Bucket 等算法来确保请求以我们可以处理的速度命中服务。

现在,我们倾向于采用选项 4。我们希望以这样一种方式实施请求限制(流量整形),即所有在先前与租户商定的速率(由合同强制执行)内提出的请求都将传递给服务毫不拖延。由于我们事先知道每个租户每分钟将发出多少请求(至少是估计的),因此我们可以相应地调整我们的基础设施(加上安全裕度)。

如果突发到达,多余的请求将被排队(达到限制),然后以固定速率释放(使用漏桶或类似算法)。这将确保租户不会影响其他租户的性能,因为请求将以预定义的速率命中服务。理想情况下,允许的请求率将是“动态的”,这样租户可以使用其他不使用它们的租户的“每分钟请求数”(在安全限制内)。我相信这被称为“动态速率泄漏桶”算法。目标是最大限度地利用资源。

我的问题是:

  • 提议的策略是否可行?您知道此用例的任何其他可行策略吗?
  • 是否有开源、商业或 SaaS 服务可以提供这种流量整形功能?据我所知,Kong 或 Tyk 不支持这样的东西,所以......还有其他 API 网关吗?
  • 如果 Kong 不支持这一点,那么实现我所描述的插件之类的东西有多难?我们必须考虑到它需要一些共享状态(例如使用 Redis),因为我们正在使用多个 Kong 实例(用于负载平衡和高可用性)。

非常感谢你,米克尔。

api trafficshaping throttling rate-limiting

5
推荐指数
1
解决办法
1127
查看次数

Laravel 油门消息

我正在使用 ThrottleRequest 来限制登录尝试。在 Kendler.php 我有

'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
Run Code Online (Sandbox Code Playgroud)

和我在 web.php 中的路线

Route::post('login', ['middleware' => 'throttle:3,1', 'uses' => 'Auth\LoginController@authenticate']);
Run Code Online (Sandbox Code Playgroud)

当我第四次登录时,它返回状态 429 并带有消息“TOO MANY REQUESTS”。(默认情况下,我猜)
但我只想返回错误消息,例如:

return redirect('/login')
            ->withErrors(['errors' => 'xxxxxxx']);
Run Code Online (Sandbox Code Playgroud)

谁来帮帮我!谢谢你!

throttling laravel

5
推荐指数
1
解决办法
2243
查看次数

Laravel 6:限制密码重置

在 laravel 6 中,密码代理现在有以下限制密码重置(https://github.com/laravel/framework/blob/6.x/src/Illuminate/Auth/Passwords/PasswordBroker.php#L58

public function sendResetLink(array $credentials)
{
    // First we will check to see if we found a user at the given credentials and
    // if we did not we will redirect back to this current URI with a piece of
    // "flash" data in the session to indicate to the developers the errors.
    $user = $this->getUser($credentials);

    if (is_null($user)) {
        return static::INVALID_USER;
    }

    if (method_exists($this->tokens, 'recentlyCreatedToken') &&
        $this->tokens->recentlyCreatedToken($user)) {
        return static::RESET_THROTTLED;
    }

    // Once we have …
Run Code Online (Sandbox Code Playgroud)

throttling forgot-password laravel-6.2

5
推荐指数
1
解决办法
5993
查看次数

Laravel API 从速率限制中排除 1 个 IP 地址

在 Laravel API 上,我使用默认的中间件进行节流设置了速率限制;

Route::group(['prefix' => 'products'], function() {
    Route::get('/', ['as' => 'products.index', 'uses' => 'CustomerProductController@index'])->middleware('throttle:60,1');
    Route::get('/{product}', ['as' => 'products.show', 'uses' => 'CustomerProductController@show'])->middleware('throttle:50,1');
});
Run Code Online (Sandbox Code Playgroud)

现在我需要制作自己的中间件以从限制中排除 1 个 IP 地址。但不知何故,我只能找到有关以其他方式做事的建议,例如。限制一组 IP 地址。

有人可以给我一个正确方向的推动吗?

php middleware throttling laravel

5
推荐指数
1
解决办法
1402
查看次数