gpt4 book ai didi

laravel - 查看一秒内处理了多少个Job?

转载 作者:行者123 更新时间:2023-12-05 06:51:45 26 4
gpt4 key购买 nike

我正在尝试使用 Redis 实现速率限制。我需要调用一个 TPS 为 100 或每秒可调用 100 次的 API。我有一个限制,我不能调用 API 进行测试。如何测试我的 API 在一秒钟内被调用的次数不超过 100 次?

Redis::throttle('key')->allow(100)->every(1)->then(function () {
// API called that has rate limit
}, function () {
// Could not obtain lock...

return $this->release(10);
});

最佳答案

速率限制不是一项微不足道的任务。由于往返时间的原因,很难在第二层找到准确的计数。在您的情况下,由于您已将 100 指定为最大计数,Larval 保证它将在一秒钟内处理最多 100 条消息。

除非您的 Redis 始终以微秒为单位提供响应,否则每个方法调用都会增加 1-5 毫秒的执行时间。

最好的办法可能是,您对 Redis 调用进行基准测试,看看使用 Laravel throttle 原语可以获取多少锁。作为基本测试,将 throttle 设置为 10_000 并简单地运行打印语句并检查您可以进行多少次调用(您应该在生产中进行),这个数字将为您提供每秒可以获得的最大锁数。

如果您可以在一秒钟内获得超过 100 个锁,那么没有什么可以阻止您使用您提到的原语。

为了测试,你可以做一些事情,比如

  • 找到所述 API 的 p99/p95/p90 响应时间
  • 在您的系统中添加虚拟 API/方法,API/方法只需花费 p99/p95/p90 秒。为简单起见,它可以只休眠所需的时间间隔。

现在您可以使用您的虚拟方法/API,在这里您可以进行各种计数以确定您是否超过节流限制,您可以使用毫秒进行记录并按秒聚合以识别任何问题,运行此一个小时左右。

关于laravel - 查看一秒内处理了多少个Job?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66102802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com