Node.JS 在侦听器接收许多事件时减少 CPU 负载

Nyx*_*nyx 5 javascript postgresql asynchronous node.js sequelize.js

我的 Node.js 应用程序有 3 个事件侦听器,每秒总共接收 5-10k 个事件。这些侦听器函数涉及向 PostgreSQL 数据库发送 INSERT 查询。例如,

foo.on('msg', data => sequelize.create(some_processing(data)));
Run Code Online (Sandbox Code Playgroud)

在具有 1 个 vCPU 和 1 GB RAM 的云服务器上运行节点应用程序,服务器负载几乎总是 100%。运行一段时间后,ORM 会抱怨连接超时。我的猜测是函数调用正在排队,直到超过数据库查询的超时阈值。

问题:侦听器功能是否阻塞?如果是这样,它是否可以通过使其成为异步即发即弃调用来帮助减少 CPU 负载,以及如何做到这一点?

出于我的目的,可以乱序插入数据,因为插入的每一行都有一个时间戳。

在第一台服务器上运行 node.js 应用程序

  • 节点 v12.14.0
  • Ubuntu 18.04
  • 1 个虚拟 CPU、1 GB 内存、4 GB 交换、SSD

第二台服务器上运行 PostgreSQL

  • PostgreSQL 11.5
  • Ubuntu 18.04 服务器
  • 1 个虚拟 CPU、1 GB 内存、4 GB 交换、SSD

谢谢!