我想用Ruby测试速率限制应用程序,我根据每秒的请求数量定义不同的行为。
例如,如果我看到每秒300或更多请求,我希望它以块响应。
但是我如何通过在Ruby中每秒生成300个请求来测试它?据我所知,基于CPU存在严格的限制,但如果我将数字保持在远低于该限制的范围内,我仍然会发送既超过阈值又保持低于阈值的内容?
仅循环N次并不能保证吞吐量。
答案 0 :(得分:3)
快速而肮脏的方法是启动300个线程,每个线程每秒执行一次请求。更优雅的方法是使用Eventmachine之类的东西以所需的速率创建请求。使用正确的非阻塞HTTP库,它可以轻松生成该级别的活动。
您也可以尝试这些工具:
答案 1 :(得分:0)
最小的自制软件解决方案如何:
OPS_PER_SECOND = 300
count = 0
duration = 10
start = Time.now
while true
elapsed = Time.now - start
break if elapsed >= duration
delay = (count - (elapsed / OPS_PER_SECOND)) / OPS_PER_SECOND
sleep(delay) if delay > 0
do_request
count += 1
end