gpt4 book ai didi

node.js - Nginx 性能问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:15 24 4
gpt4 key购买 nike

我在使用 Nginx 时遇到了一些性能问题。

我有一个 Nginx 服务器位于 4 个 Node.js 应用程序前面。 Node 应用程序没有做任何花哨的事情,它只是循环遍历expressJS堆栈并且不访问任何外部数据库源等。

我正在使用 ApacheBench 来获取应用程序性能的基准。当我在我的 upstream 中使用单个服务器时规则,我得到一个常数 1000 req/s吞吐量。例如:

upstream cp_backend {
server 10.134.14.128:5000;
keepalive 32;
}

返回1000 req/s 。当我添加第二个 Node 应用程序(在第二个服务器上运行)时,例如:

upstream cp_backend {
server 10.134.14.128:5000;
server 10.134.34.226:5000;
keepalive 32;
}

我看到了2000 req/s吞吐量(如预期)。

但是,一旦我添加超过 2 个后端服务器,应用程序就不再线性扩展。例如:

upstream cp_backend {
server 10.134.14.128:5000;
server 10.134.34.226:5000;
server 10.134.26.172:5000;
keepalive 32;
}

仅返回约2500 req/s ,而不是 3000正如预期的那样。同样:

upstream cp_backend {
server 10.134.14.128:5000;
server 10.134.34.226:5000;
server 10.134.26.172:5000;
server 10.134.26.178:5000;
keepalive 32;
}

仅返回3000 req/s ,而不是 4000正如预期的那样。

提供更多背景信息。我已经测试了在这些相同的服务器组上运行的另一个(非 NodeJS)应用程序,并且我能够获得超过 17k req/s ,所以我知道 Nginx 和我的测试机器能够达到这些数字。还值得一提的是content-length在 17k 测试中实际上比 Node 应用程序更大。

每个 Node 应用程序都在具有自己资源的单独虚拟机上运行。当使用简单工具如top时,我没有看到任何重大瓶颈。另外,我知道当使用单个上游服务器时,node.js VM 能够处理 1000 个请求/秒。看起来这是一个 nginx 瓶颈,因为当通过 nginx 直接访问其中任何一个时,我可以获得 1000 个请求/秒。如果我知道每个 Node 应用程序都能够 1000 req/s ,为什么我不能实现 4k req/s与 4 upstream服务器?

有什么好的分析软件可以推荐吗?

最佳答案

需要了解每个 Node 上的 CPU 和内存利用率的详细信息,以了解包括 nginx 代理服务器在内的瓶颈。

不过,当您在代理中连接超过 2 个上游服务器时,最佳实践是使用“least_conn”参数。这将确保服务器负载分布相等,优先选择当时负载最小的服务器。

您将从以下位置获得更多信息 http://nginx.org/en/docs/http/load_balancing.html

您可能还需要调整 Nginx。 http://clouditops.blogspot.in/2016/11/improve-nginx-performance.html

关于node.js - Nginx 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41235032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com