gpt4 book ai didi

node.js - socket.io 连接是否有硬性限制?

转载 作者:搜寻专家 更新时间:2023-10-31 23:45:04 25 4
gpt4 key购买 nike

背景

我们有一台装有 socket.io 2.0.4 的服务器。此服务器从使用 socket.io-client 2.0.4 模拟客户端的压力脚本接收请求。

脚本模拟了客户端的创建(每个客户端都有自己的套接字),使用 socket.disconnect();

问题

在最初的几秒钟内一切顺利。但是每次测试都达到脚本开始吐出以下错误的程度:

connect_error: Error: websocket error

这意味着我的脚本正在创建的客户端没有连接到服务器,因为它们无法连接。

此脚本每秒创建 7 个客户端(在整个秒内均匀分布),每个客户端发出 1 个请求然后死亡。

研究

起初我以为文件描述符和 UNIX 强加的限制有问题,因为服务器是在 Debian 机器上:

遵循这些建议后,问题仍然存在。

然后我虽然我的测试脚本可能没有正确连接,所以我更改了这个讨论中的连接选项:

还是不行。

可能出了什么问题?

我看到机器的 CPU 一直处于 100%,所以我想我正在用请求冲击服务器。但如果我没记错的话,服务器应该简单地接受更多的请求并在可能的时候处理它们。

问题

  • socket.io 服务器可以处理的连接数量是否有限制?

最佳答案

在进行此类压力测试时,需要注意保护措施和守门人。

在我们的案例中,我们的堆栈部署在 AWS 中。所以首先,AWS 负载均衡器开始阻止我们,因为他们认为系统正在被 DDOS 攻击。

然后,Debian 系统被淹没并开始拒绝与 SYN_FLOOD 的连接。

但在修复之后,我们仍然遇到错误。结果我们不得不增加 TCP 连接的缓冲区以及 TCP 连接在内核中的处理方式。

现在它接受所有连接,但我希望没有人经历我们为找到它而经历的痛苦......

关于node.js - socket.io 连接是否有硬性限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805879/

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