标签: throttling

我可以限制分布式应用程序发出的请求吗?

我的应用程序发出Web服务请求; 提供商将处理的请求的最大速率,因此我需要限制它们.

当应用程序在单个服务器上运行时,我曾经在应用程序级别执行此操作:跟踪到目前为止已经发出了多少请求的对象,并等待当前请求是否超过允许的最大负载.

现在,我们正在从单个服务器迁移到群集,因此有两个应用程序副本正在运行.

  • 我不能继续检查应用程序代码的最大负载,因为两个节点组合可能超过允许的负载.
  • 我不能简单地减少每台服务器上的负载,因为如果另一个节点空闲,第一个节点可以发送更多请求.

这是一个JavaEE 5环境.限制应用程序发出的请求的最佳方法是什么?

java throttling java-ee

11
推荐指数
1
解决办法
3632
查看次数

限制JavaScript函数调用,但排队(不要丢弃调用)

一个函数如何限制其调用?如果过于频繁,则不应丢弃这些调用,而是在时间上排队并间隔开,间隔为X毫秒.我看过油门去抖动,但他们放弃了通话而不是将它们排队等待将来运行.

有没有比process()X毫秒间隔设置方法的队列更好的解决方案?JS框架中是否有这样的标准实现?到目前为止我看过underscore.js - 没什么.

javascript throttling rate-limiting task-queue debouncing

11
推荐指数
3
解决办法
3503
查看次数

在Python Asyncio中限制异步函数

我有一个listawaitables,我想传递给asyncio.AbstractEventLoop,但我需要节流请求第三方API.

我想避免一些等待传递future到循环的东西,因为在此期间我阻止我的循环等待.我有什么选择?SemaphoresThreadPools会限制多少并发运行,但是这不是我的问题.我需要将请求限制为100 /秒,但完成请求所需的时间并不重要.

这是一个使用标准库的非常简洁(非)工作示例,它演示了这个问题.这应该以100 /秒的速度节流,但节流速度为116.651 /秒.在asyncio中限制异步请求调度的最佳方法是什么?

工作代码:

import asyncio
from threading import Lock

class PTBNL:

    def __init__(self):
        self._req_id_seq = 0
        self._futures = {}
        self._results = {}
        self.token_bucket = TokenBucket()
        self.token_bucket.set_rate(100)

    def run(self, *awaitables):

        loop = asyncio.get_event_loop()

        if not awaitables:
            loop.run_forever()
        elif len(awaitables) == 1:
            return loop.run_until_complete(*awaitables)
        else:
            future = asyncio.gather(*awaitables)
            return loop.run_until_complete(future)

    def sleep(self, secs) -> True:

        self.run(asyncio.sleep(secs))
        return True

    def get_req_id(self) -> int:

        new_id = …
Run Code Online (Sandbox Code Playgroud)

python multithreading throttling python-3.x python-asyncio

11
推荐指数
2
解决办法
2007
查看次数

令牌桶与固定窗口(流量突发)

我正在比较令牌桶固定窗口速率限制算法,但对这两种算法中的流量突发有点困惑。

假设我想将流量限制为 10 个请求/分钟。

令牌桶中以每分钟10个令牌的速度添加令牌。

 Time      Requests AvailableTokens
10:00:00     0          10 (added 10 tokens)
10:00:58    10          0
10:01:00     0          10 (added 10 tokens)
10:01:01    10          0 
Run Code Online (Sandbox Code Playgroud)

现在,如果我们在时间戳 10:01:01 看到,最后一分钟允许 20 个请求,超过了我们的限制。

类似地,使用固定窗口算法。窗口大小:1 分钟。

 Window    RequestCount IncomingRequests
10:00:00      10         10 req at 10:00:58
10:01:00      10         10 req at 10:01:01
Run Code Online (Sandbox Code Playgroud)

类似的问题也在这里。

这两种算法都遇到这个问题吗,还是我的理解存在差距?

algorithm throttling rate-limiting

11
推荐指数
1
解决办法
4741
查看次数

javascript/jquery - 为一个按钮添加去抖动

我想为一个按钮添加一个debounce,但是我希望每次用户点击按钮时执行一些操作,但只有在用户点击按钮后5秒后才执行,然后执行SQL更新.通常,节流似乎直接应用于监听器.在这里,我想要在每次单击按钮时执行一些操作,然后在合理的等待期后进行更新.

我不知道如何在这种情况下使用该功能......

参考:http://code.google.com/p/jquery-debounce/

$('#myButton').click(function() {
    // do a date calculation
    // show user changes to screen
    // wait until user has has stopped clicking the 
             // button for 5 seconds, then update file with "process" function.

});

function process(){
    // update database table
}
Run Code Online (Sandbox Code Playgroud)

去抖动语法

$('input').bind('keyup blur', $.debounce(process, 5000));
Run Code Online (Sandbox Code Playgroud)

javascript jquery throttling

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

如何使用Reactive Extensions使用最大窗口大小来限制事件?

场景:

我正在构建一个UI应用程序,每隔几毫秒从后端服务获取通知.收到新通知后,我想尽快更新用户界面.

因为我可以在很短的时间内收到大量的通知,而且我总是只关心最新的事件,所以我使用了Reactive Extensions框架的Throttle()方法.这允许我忽略紧跟新通知的通知事件,因此我的UI保持响应.

问题:

假设我将通知事件的事件流限制为50ms,并且后端每隔10ms发送一次通知,Thottle()方法将永远不会返回事件,因为它会一次又一次地重置其滑动窗口.在这里,我需要一些额外的行为来指定类似超时的东西,这样我就可以每秒至少检索一个事件,如果有这么高的事件吞吐量.如何使用Reactive Extensions执行此操作?

c# throttling system.reactive

10
推荐指数
1
解决办法
2786
查看次数

Linux fq_codel中的单独流程是什么?

我正在设置一个概念证明来限制终端(客户端)的入口流量:

eth0 -> ifb0 -> htb -> filter by ip -> htb rate -> fq_codel+ecn
Run Code Online (Sandbox Code Playgroud)

我有两个源ips用于特定程序我想要限制.有问题的程序打开了一堆tcp连接(下载,因此进入限制),我想限制它使用(完成)的总入口带宽,并在连接到相同IP地址之间进行公平调度(这个问题).

最后有1个带速率的桶和1个fq_codel实例.

我有它的工作,但我有一些问题:

  • 当然,codel每个协议都有单独的队列(tcp vs udp)?
  • codel每个源ip都有单独的队列吗?
  • codel每个TCP连接有不同的队列吗?
  • 我必须手动分离/标记流量吗?

每个互联网研究流程id是"5元组的哈希",问题是,数据包的哪些元素是5元组的一部分?是否包括源端口和目标端口?

linux networking routing throttling bandwidth-throttling

10
推荐指数
1
解决办法
521
查看次数

在Bokeh应用程序中限制

我有一个带有Slider小部件的Bokeh应用程序,它使用Slider.on_change回调来更新我的图形.但是,滑块更新比我的回调函数可以处理得快得多,因此我需要一种方法来限制传入的更改请求.问题非常突出,因为滑块在滑动期间调用回调,而只有最后一个滑块值(当用户释放鼠标时)是有意义的.

我怎么能解决这个问题?

python throttling bokeh

10
推荐指数
1
解决办法
2132
查看次数

Azure iot集线器设备到云分区的目的

创建新的Azure IOT Hub时,系统会询问您需要多少个设备到云分区.您可以为标准层选择2-32个分区.

我了解SKU和单位数决定了您可以发送到IOT Hub的每日最大消息配额.并且建议将您的设备分成多个IOT集线器以平滑流量突发.但是,设备到云分区需要澄清.

1 >>单个IOT集线器下的设备到云分区的目的是什么?

2 >>我们如何利用那些IOT Hub设备到云分区? 

谢谢.

throttling sharding azure iot azure-iot-hub

10
推荐指数
1
解决办法
3862
查看次数

如何延迟/限制ASP.NET中的登录尝试?

我正在尝试对我的ASP.NET Web项目执行一些非常简单的请求限制.目前我对针对DOS攻击的全局限制请求不感兴趣,但是想要人为地延迟对所有登录尝试的响应,只是为了使字典攻击更难做(或多或少像Jeff Atwood 这里概述的那样).

你会如何实现它?这样做的方式是 - 我想 - 简单地打电话

Thread.Sleep();
Run Code Online (Sandbox Code Playgroud)

在请求期间的某个地方.建议?:)

asp.net security iis throttling

9
推荐指数
1
解决办法
3498
查看次数