为什么在使用 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 个连接到目标)。
如果我们运行 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 个连接到目标)。