【发布时间】:2018-02-08 12:22:03
【问题描述】:
我正在使用以下场景对 nginx/node.js 拓扑进行基准测试:
- 直接对单个 node.js 服务器进行基准测试
- 在 nginx 后面对 2 个 node.js 服务器进行基准测试(RR 负载平衡)
对于这两个基准,“wrk”与以下配置一起使用:
wrk -t12 -c20 -d20s --timeout 2s
所有 node.js 实例都是相同的。在每个 http GET 请求上,它们迭代给定的数字“n”并在每个循环中增加一个变量。
当我执行测试用例时,我得到了下面概述的有点令人惊讶的结果。我不明白,为什么双 node.js 设置(拓扑 2)在 100 万次迭代中表现更差 - 它甚至比拓扑 1 上相同的 100 万次循环更差。
1037 req/s(单次)与 813 req/s (LB)
我确实预计会有一点开销,因为单个操作在 node.js 实例前面没有 nginx - 但测试结果看起来真的很奇怪。
10 和 500 万次迭代的调用似乎运行良好,因为吞吐量的增加符合预期。
这种行为有合理的解释吗?
测试在单台计算机上执行; 每个 node.js 实例都在监听不同的端口。
Nginx 使用标准配置,除了:
- 80 端口
- 2个上游服务器
- proxy_pass 在“/”路由上
- 1024(默认)Worker_connections(增加不改变结果)
【问题讨论】:
-
您是否100%确定请求确实在两个实例之间共享? 粘情况
-
@EMX 是的,我将端口添加到输出并从浏览器测试它......然后,开始 wrk
标签: node.js nginx benchmarking wrk