【发布时间】:2020-07-12 01:46:39
【问题描述】:
我们有使用 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");
});
【问题讨论】:
-
您的 Node.js 服务器是否仅用作另一个端口的代理?如果是这样,你最好使用 nginx,它比 express 和 axios 性能要好得多。此外,那里的代码不会向
res发送响应。您是否检查过在运行该 Node.js 服务器时是否确实收到了响应? -
很遗憾这个问题仍然没有答案。我刚刚发现了同样的错误。如果服务 A 使用 axios 对服务 B 进行大量调用(A 是处理器,B 正在保存这些结果),那么 CPU 使用率会上升,内存使用率也会上升。 GC无法恢复内存,会失败。
标签: node.js performance axios