我有一个非常简单的 nodejs 应用程序,它通过 POST 请求正文接受 json 数据(大约 1KB)。响应会立即发送回客户端,并且 json 会异步发布到 Apache Kafka 队列。同时请求的数量可以高达每秒 10000 个,我们使用在三台不同机器上运行的 Apache Jmeter 进行模拟。目标是在没有失败请求的情况下实现小于一秒的平均吞吐量。
在 4 核机器上,该应用程序每秒处理多达 4015 个请求而没有任何故障。然而,由于目标是每秒 10000 个请求,我们将节点应用程序部署在集群环境中。
实现了同一台机器上的集群和两台不同机器之间的集群(如此处所述)。Nginx 被用作负载均衡器,以轮询两个节点实例之间的传入请求。我们预计吞吐量会显着提高(如此处所述),但结果恰恰相反。成功请求的数量下降到每秒大约 3100 个请求。
我的问题是:
- 集群方法可能出了什么问题?
- 这甚至是提高 Node 应用程序吞吐量的正确方法吗?
- 我们还对 Tomcat 容器中的 Java Web 应用程序进行了类似的练习,它在单个实例中执行了预期的 4000 个请求,在具有两个实例的集群中执行了大约 5000 个成功请求。这与我们认为 nodejs 比 Tomcat 性能更好的信念相矛盾。由于每个请求模型的线程,tomcat 通常会更好吗?
提前非常感谢。