- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我们有一台装有 socket.io
2.0.4 的服务器。此服务器从使用 socket.io-client
2.0.4 模拟客户端的压力脚本接收请求。
脚本模拟了客户端的创建(每个客户端都有自己的套接字),使用 socket.disconnect()
;
在最初的几秒钟内一切顺利。但是每次测试都达到脚本开始吐出以下错误的程度:
connect_error: Error: websocket error
这意味着我的脚本正在创建的客户端没有连接到服务器,因为它们无法连接。
此脚本每秒创建 7 个客户端(在整个秒内均匀分布),每个客户端发出 1 个请求然后死亡。
起初我以为文件描述符和 UNIX 强加的限制有问题,因为服务器是在 Debian 机器上:
遵循这些建议后,问题仍然存在。
然后我虽然我的测试脚本可能没有正确连接,所以我更改了这个讨论中的连接选项:
还是不行。
我看到机器的 CPU 一直处于 100%,所以我想我正在用请求冲击服务器。但如果我没记错的话,服务器应该简单地接受更多的请求并在可能的时候处理它们。
最佳答案
在进行此类压力测试时,需要注意保护措施和守门人。
在我们的案例中,我们的堆栈部署在 AWS 中。所以首先,AWS 负载均衡器开始阻止我们,因为他们认为系统正在被 DDOS 攻击。
然后,Debian 系统被淹没并开始拒绝与 SYN_FLOOD 的连接。
但在修复之后,我们仍然遇到错误。结果我们不得不增加 TCP 连接的缓冲区以及 TCP 连接在内核中的处理方式。
现在它接受所有连接,但我希望没有人经历我们为找到它而经历的痛苦......
关于node.js - socket.io 连接是否有硬性限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805879/
我是一名优秀的程序员,十分优秀!