我正在使用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}', ...})
答案 0 :(得分:1)
您可以处理的每秒请求数没有通用答案。这取决于您的配置和代码中的许多内容,例如:
所以,这里没有绝对的答案适合每个人。如果您没有某种人为限制并发性的设计问题,那么发现服务器实际可以处理的最佳方法是构建测试引擎并对其进行测试。查找失败的位置和方式,并修复这些问题以进一步扩展可扩展性或实施保护以避免达到此限制。
注意:当公共API进行速率限制选择时,通常在每个客户端的基础上完成,并且限制设置为一个似乎略高于合理客户端的值。这更多是为了允许许多客户端合理使用服务器,因为单个客户端不会消耗太多的整体资源。如果在使用您的API时,从单个客户端发出数千个小请求不被视为“良好做法”,那么您只需选择一个比每个客户端限制小得多的数字。
注意:您可能还希望让API让他们在一个API请求中上传多条消息而不是大量API请求,从而使客户更容易。