问题标签 [throttling]
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.
c# - 限制网络请求是谁的责任?
我正在开发一个从第三方网站检索信息的类库。如果在设定的时间段(约 0.5 秒)内发出过多请求,正在访问的网站将停止响应。
我的库的公共方法直接与 Web 服务器上的文件资源相关。换句话说,每次调用一个方法时,HttpWebRequest
都会创建一个并发送到服务器。如果一切顺利,将向调用者返回一个 XML 文件。但是,如果这是 0.5 秒内的第二次 Web 请求,该请求将超时。
我的困境在于我应该如何处理请求限制(如果有的话)。显然,我不希望调用者坐在那里等待响应——尤其是如果我完全确定他们的请求会超时。
我的库对我创建的 web 请求进行排队和限制是否更有意义,或者如果客户端在 API 调用之间等待的时间不够长,我的库是否应该简单地抛出异常?
security - 如何在 PHP 中限制用户登录尝试
我刚刚在阅读这篇文章《关于防止快速登录尝试 的基于表单的网站身份验证的权威指南》 。
最佳实践 #1:随着失败尝试次数的增加而增加的短时间延迟,例如:
1 次尝试失败 = 无延迟
2 次尝试失败 = 2 秒延迟
3 次尝试失败 = 4 秒延迟
4 次尝试失败 = 8 秒延迟
5 次尝试失败 = 16 秒延迟
等。
DoS 攻击这种方案是非常不切实际的,但另一方面,由于延迟呈指数增长,因此具有潜在的破坏性。
我很好奇如何在 PHP 中为我的登录系统实现这样的功能?
msmq - MSMQ - 快速生产者/慢消费者
我对消息传递(使用 MSMQ)有问题,这是快速生产者/慢消费者的一种变体。有没有办法在私有 MSMQ 队列中获得未使用的消息计数?我想用它来限制生产者。
我想在 MSMQ 中使用信号量范式,其中生产者应用程序仅在未完成的消息计数小于指定数量时才发送消息。
本质上,我想做类似以下的事情
我的配置:Win XP/2003 和 MSMQ 3.0
java - 我可以限制分布式应用程序发出的请求吗?
我的应用程序发出 Web 服务请求;提供者将处理请求的最大速率,因此我需要限制它们。
当应用程序在单个服务器上运行时,我曾经在应用程序级别执行此操作:一个跟踪到目前为止已发出多少请求的对象,并在当前请求使其超过最大允许负载时等待。
现在,我们正在从单个服务器迁移到集群,因此有两个应用程序副本正在运行。
- 我无法继续检查应用程序代码的最大负载,因为两个节点的组合可能超过允许的负载。
- 我不能简单地减少每台服务器的负载,因为如果另一个节点空闲,第一个节点可以发出更多请求。
这是一个 JavaEE 5 环境。限制应用程序发出的请求的最佳方法是什么?
performance - 有没有办法限制或限制 Oracle 中用户使用的资源?
我有一个多用户 Web 应用程序,当第三方报告应用程序查询我的 Oracle 10g 数据库时遇到问题。
报告查询正在减慢系统速度并影响所有其他用户。
有没有办法限制这个用户的会话,这样他们的查询就不会影响其他用户?
.net - 限制 Windows .NET 服务的 CPU 使用率
有什么方法可以限制用.NET编写的Windows服务的cpu使用率,无论是在服务代码内部还是外部。将当前线程设置为最低优先级不是一个选项,但是一旦开始发生异常,cpu 负载就会上升,是否可以限制这一点?
ruby - 限制 ruby 文件流的速率
我正在从事一个项目,该项目涉及从多个地理分布的节点将 Flash 视频文件上传到 S3 存储桶。
每个视频文件大约 2-3mb,我们每十分钟只发送一个文件(每个节点),但是我们消耗的带宽需要限制在 ~20k/s,因为这些节点将流媒体传输到CDN,并且由于位置的原因,我们最多只能上传 512k。
我一直在研究 ASW-S3 gem,虽然它不提供任何速率限制,但我知道您可以传入 IO 流。鉴于此,我想知道是否有可能创建一个覆盖该read
方法的速率限制流,添加速率限制逻辑(例如,以最简单的形式sleep
在读取之间调用),然后调用被覆盖的超方法。
我考虑的另一个选择是破解 Net::HTTP 的代码并将速率限制放入send_request_with_body_stream
使用while
循环的方法中,但我不完全确定哪个是最佳选择。
我曾尝试扩展 IO 类,但这根本不起作用,只是从类中继承class ThrottledIO < IO
并没有做任何事情。
任何建议将不胜感激。
.net - WCF 服务限制
我在启用了 BasicHTTPBinding 和 SSL 的控制台应用程序中部署了 WCF 服务。还设置了以下属性:
我还将节流行为设置为
另一方面,我创建了一个测试客户端(用于负载测试),它同时启动多个客户端(多个线程)并在服务器上执行事务。一切似乎都很好,但在服务器上 CPU 利用率并没有增加,所以我添加了一些日志记录来查看对服务器的并发调用数,发现它从未超过 6。
我已经检查了性能计数器日志记录代码两次以上,这对我来说似乎很好。
所以我想问一下这种情况下问题出在哪里?我还没有指定任何类型的 ContextMode 或 ConcurrencyMode。
在这篇文章之后,我注意到每当我启动另一个测试客户端实例时,我的并发服务器调用计数器会增加到 2,例如如果我只运行 1 个实例,则最大并发 Rcvd 调用将为 2,如果有两个实例,则相同的值变为 4等等。一次进程的 WCF 调用数是否有限制?
********于 3 月 17 日添加********
今天,我在运行服务器的同一台机器上用一个测试客户端(有 50 个并发用户)运行了另一项测试。这次我得到了我希望它显示的确切结果(即服务器的最大并发调用 Rcvd = 50)。
但我也需要在其他机器上做同样的事情。有人可以帮我吗?
wcf - 每 X 秒处理一次的排队 WCF 服务
我需要创建一个可以在配置的时间间隔内处理排队请求的服务。例如,访问网络并从要求我们将请求限制为每秒一次的站点获取财务数据。我是 WCF 的新手,我不确定 (1) WCF 和 MSMQ 是否是实现这一点的正确选择?(2) 如果是这样,执行间隔的最佳机制是什么?线程等待?一个计时器(不确定它是如何工作的)。