我们的服务器有socket.io
2.0.4。此服务器从使用socket.io-client
2.0.4。
该脚本模拟客户端(每个客户端都有自己的套接字)的创建,发送请求并立即死亡,使用socket.disconnect()
;
在最初的几秒钟内一切顺利。但是每个测试都会达到脚本开始吐出以下错误的程度:
connect_error:错误:websocket错误
这意味着我的脚本正在创建的客户端没有连接到服务器,因为它们无法连接。
此脚本每秒创建7个客户端(在整个秒内均匀分布),每个客户端发出1个请求然后死亡。
起初我认为UNIX存在文件描述符和限制的问题,因为服务器在Debian机器中:
在遵循这些建议后,问题仍然存在。
然后我可能我的测试脚本没有正确连接,所以我改变了连接选项,如下所示:
仍然无济于事。
我看到机器的CPU始终处于100%,所以我想我正在请求服务器。 但如果我没有弄错的话,服务器应该只接受更多请求并在可能的情况下处理它们。
答案 0 :(得分:3)
进行此类压力测试时,需要注意保护和门卫。
在我们的案例中,我们的堆栈部署在AWS中。首先,AWS负载均衡器开始阻止我们,因为他们认为系统处于DDOS状态。
然后,Debian系统被淹没,它开始拒绝与SYN_FLOOD的连接。
但在确定之后我们仍然有错误。事实证明,我们必须增加TCP连接的缓冲区以及如何在内核中处理TCP连接。
现在它接受了所有的联系,但我希望没有人经历过我们所遇到的痛苦......