Axios http 调用的性能很差,调用时间较长,导致每秒事务数较低

use*_*257 9 performance node.js axios

我们有使用 node js 构建的微服务。一项服务(例如服务 A)需要对其他服务(例如服务 B)进行 http api 调用以完成其功能。服务 A 的负载测试提供较低的 TPS(每秒事务数),其原因是 api 调用需要时间。但是,当直接在服务 B 上进行负载测试时,TPS 非常好。

在负载测试期间,TPS 开始逐渐下降。

所以我认为 node js 或 axios 库导致了性能问题。

您能否让我知道我们如何在 api 调用中获得更好的性能。

我有如下简单的快速路由方法,我正在使用soap ui进行简单的负载测试,与直接对下面使用的ping url进行负载测试的TPS相比,我获得的TPS低于50%

router.post("/", async function(req, res) {
  await axios.get("http://localhost:3501/ping");
   res.status(201).json("completed");

});
Run Code Online (Sandbox Code Playgroud)

Cri*_*_SO 1

Node.js 中存在一个问题,即处理每个传入的 64Kb 数据都需要事件循环的完整轮换。如果您正在执行大量并行请求或执行任何其他会增加事件循环延迟的工作,则性能将受到很大影响。axios受此影响很大。

我有一个停滞的 PR 来解决这个问题: https: //github.com/nodejs/node/pull/39097

一种解决方法是增加highWaterMark- 请参阅链接的问题。