为什么在使用 WebSocket 时 Amazon CloudWatch 指标中的 ActiveConnectionCount 加倍?

Why is ActiveConnectionCount doubled in Amazon CloudWatch metrics when using WebSockets?

如果我们运行 WebSocket 负载测试最多有 10K 个打开的连接,我们总是会得到双倍的 ActiveConnectionCount,包含的图像是我们 wss 的应用程序负载均衡器的 CloudWatch 指标的屏幕截图:/ /端点。如果我们 运行 HTTP 负载测试 ActiveConnectionCount 是正确的。这是为什么?

伪负载测试代码:

const WebSocket = require('ws');

for (let i = 0; i < 10000; i++) {
const client = new WebSocket('wss://endpoint');

client.on('open', () => {
  setInterval(() => {
    client.send('random message');
  }, 15000);
});

}

Amazon CloudWatch 指标中 ActiveConnectionCount 的屏幕截图:

根据 AWS 文档,ActiveConnectionCount 是“从客户端到负载均衡器的活动并发 TCP 连接总数 and 来自负载均衡器到目标。

因此,如果您有 10 个通过负载均衡器连接到目标的连接,则此指标应显示 20 个连接(10 个来自客户端,10 个连接到目标)。