我应该怎样限制我的POST每秒速率?

我正在使用Hapi.js构build一个API。 我的一些代码将less量的数据推送到API。 这个问题似乎是推送器代码淹没了API,我得到ECONNRESET错误 – 这意味着消息正在消失。 我打算在推送器代码中安装限速器,可能是node-rate-limiter ( 链接 )。

问题是,我应该如何设定这个限制? 我想最大限度地提高这个应用程序的性能,所以我可以很容易地尝试每小时发送数千条消息。 数据只是被转储到redis,所以我怀疑在API中的代码将是一个问题,但我仍然需要知道什么样的消息率Hapi舒适。 我需要从一些合理的东西开始,看看它是怎么回事? 也许每10毫秒1条消息?

 Hapi = require('hapi'); server = new (Hapi.Server); server.connection(port: config.port, routes: { cors: { origin: ['*'] } }); server.route({method: 'POST', path: '/update/{id}', ...}) 

对于每秒可处理多less个请求没有通用的答案。 它取决于你的configuration和代码中的很多东西,例如:

  1. 服务器硬件的types和性能
  2. 平均请求使用的CPU时间量
  3. 无论您的请求是CPU还是磁盘绑定。 如果磁盘有限制,那么这取决于您的数据库和磁盘性能。
  4. 是否实施集群以使用多个核心(如果CPU绑定)
  5. 无论您是否在共享基础设施
  6. 您的服务器configuration的最大传入连接数

所以,这里没有绝对的答案适用于每个人。 如果你没有某种人为限制并发的devise问题,那么发现你的服务器实际可以处理的最好方法就是构build一个testing引擎并对其进行testing。 find失败的地方和方法,或者修复这些问题,进一步扩展可扩展性或实施保护措施,以避免达到这一限制。


注意:当一个公共API进行速率限制select时,它通常是以每个客户端为基础进行的,并且该限制被设置为一个似乎稍高于合理客户端所做的值。 这更多的是允许许多客户端公平地使用服务器,以使单个客户端不占用太多的整体资源。 如果从单个客户端发出数千个小请求在使用您的API时被认为是“不错的做法”,那么您可以select一个比每个客户端限制小得多的数字。

注意:您可能还希望让您的API让他们在一个API请求中上传多个邮件,而不是多个API请求,从而让客户更容易。