socket.io连接有硬限制吗?

时间:2018-02-15 11:13:53

标签: node.js sockets websocket socket.io

背景

我们的服务器有socket.io 2.0.4。此服务器从使用socket.io-client 2.0.4。

模拟客户端的压力脚本接收请求

该脚本模拟客户端(每个客户端都有自己的套接字)的创建,发送请求并立即死亡,使用socket.disconnect();

问题

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

  

connect_error:错误:websocket错误

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

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

研究

起初我认为UNIX存在文件描述符和限制的问题,因为服务器在Debian机器中:

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

然后我可能我的测试脚本没有正确连接,所以我改变了连接选项,如下所示:

仍然无济于事。

可能出错?

我看到机器的CPU始终处于100%,所以我想我正在请求服务器。 但如果我没有弄错的话,服务器应该只接受更多请求并在可能的情况下处理它们。

问题

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

1 个答案:

答案 0 :(得分:3)

进行此类压力测试时,需要注意保护和门卫。

在我们的案例中,我们的堆栈部署在AWS中。首先,AWS负载均衡器开始阻止我们,因为他们认为系统处于DDOS状态。

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

但在确定之后我们仍然有错误。事实证明,我们必须增加TCP连接的缓冲区以及如何在内核中处理TCP连接。

现在它接受了所有的联系,但我希望没有人经历过我们所遇到的痛苦......