node.js - 我应该将每秒 POST 速率限制为多少?

标签 node.js api http post hapi.js

我正在使用 Hapi.js 构建 API。我的一些代码将少量数据推送到 API。问题似乎是推送器代码淹没了 API,我收到了 ECONNRESET 错误——这意味着消息正在丢失。我计划在推送器代码中安装速率限制器,可能是 node-rate-limiter ( link )。

问题是,我应该将该限制设置为多少?我想最大限度地提高这个应用程序的性能,这样我就可以很容易地尝试每小时发送数千条消息。数据只是被转储到 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}', ...})  

最佳答案

对于每秒可以处理多少请求,没有通用的答案。这取决于您的配置和代码中的许多事情,例如:

  1. 服务器硬件的类型和性能
  2. 平均请求使用的 CPU 时间量
  3. 您的请求是受 CPU 还是磁盘限制。如果磁盘受限,那么它在很大程度上取决于您的数据库和磁盘性能。
  4. 您是否实现集群以使用多个内核(如果 CPU 受限)
  5. 无论您是否在共享基础设施上
  6. 您的服务器配置的最大传入连接数

因此,这里没有适用于所有人的绝对答案。如果您没有人为限制并发性的某种设计问题,那么发现您的服务器实际可以处理什么的最好方法是构建一个测试引擎并对其进行测试。找出失败的位置和方式,然后解决这些问题以进一步扩展可扩展性或实现保护以避免达到该限制。


注意:当公共(public) API 做出速率限制选择时,它通常是在每个客户端的基础上完成的,并且限制设置为一个似乎略高于合理客户端会做的值。这更多是为了允许许多客户端公平使用服务器,一个客户端不会消耗太多的整体资源。如果从单个客户端发出数千个小请求在使用您的 API 时不被视为“良好做法”,那么您可以选择一个比每个客户端限制小得多的数字。

注意:您可能还希望让您的 API 让客户在一个 API 请求中上传多条消息而不是大量 API 请求,从而使客户更轻松。

关于node.js - 我应该将每秒 POST 速率限制为多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34598662/

相关文章:

ruby-on-rails - 在 Rails 3 中,如何在请求/响应周期完成后通过 Controller 调用一些代码?

javascript - 每 X 秒执行一次异步 javascript 代码

node.js - 在 koa 中使用 express 中间件

java - Realm不保存属性,对象虽然复制到Realm但不被管理

mysql - 将数据发送到 REST api 的良好实现?

http - 403响应可以吗?

node.js - 在没有 bodyParser 的情况下从 AngularJS 请求 Node.js 中的数据

javascript - 快速验证器如何仅在存在另一个字段时才需要该字段

python - 我应该如何在 Python 应用程序中存储 API key ?

http - 我怎么知道一个表单被提交了两次?