Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Websocket(node.js)连接限制,客户端在达到400-450个连接后将断开连接_Node.js_Performance_Socket.io - Fatal编程技术网

Websocket(node.js)连接限制,客户端在达到400-450个连接后将断开连接

Websocket(node.js)连接限制,客户端在达到400-450个连接后将断开连接,node.js,performance,socket.io,Node.js,Performance,Socket.io,我的socket.io连接限制有一个大问题。如果连接数超过400-450个连接的客户端(通过浏览器),则用户将断开连接。我增加了tcp的软限制和硬限制,但这对我没有帮助。 这个问题只适用于浏览器。当我尝试从其他node.js服务器通过套接字io客户端模块连接时,我连接了5000个客户端。 这对我来说是个大问题,完全阻碍了我。请帮忙 更新 我尝试过使用标准Websocket库(带有node.js的ws-module),问题也类似。我只能联系456个已连接的客户端 更新2 我在服务器的几个实例之间划

我的socket.io连接限制有一个大问题。如果连接数超过400-450个连接的客户端(通过浏览器),则用户将断开连接。我增加了tcp的软限制和硬限制,但这对我没有帮助。 这个问题只适用于浏览器。当我尝试从其他node.js服务器通过套接字io客户端模块连接时,我连接了5000个客户端。 这对我来说是个大问题,完全阻碍了我。请帮忙

更新

我尝试过使用标准Websocket库(带有node.js的ws-module),问题也类似。我只能联系456个已连接的客户端

更新2


我在服务器的几个实例之间划分了连接的客户端。每组客户端都通过其他端口连接。不幸的是,这个改变对我没有帮助。连接的用户总数与以前一样。

您的操作系统可能达到了极限。打开的并发文件的数量存在安全限制,请查看此线程

更新: 我想扩展这个答案,因为我以前是通过手机回答的。建立的每个新连接都将在节点进程下打开一个新的文件描述符。当然,每个连接都将使用RAM的一部分。在RAM耗尽之前,您很可能首先遇到FD限制(但这取决于您的服务器)

检查您的FD限制:

最后,我怀疑您的单客户端并发性没有使用正确的标志来强制新连接。如果要测试来自一个客户端的并发连接,需要在Web服务器上设置一个标志:


var socket=io.connect(“”,{'force new connection':true})

我的socket.io同时连接时出现内存问题。检查你是否有同样的问题?你有什么问题?你解决了吗?我的socket.io版本是1.3.6,但即使是最新的1.3.7版本也存在这个问题,内存没有发布。我使用了大量的空间,出于某种原因,它既没有管理内存,也没有出现故障。注意到大量交换。我有这个限制,问题仍然存在。*软nofile 10240*硬nofile 20480根软nofile 40960根硬nofile 81920 www数据软nofile 20480 www数据硬nofile 20480当然我使用了“{'force new connection':true}”属性。只有这样,我才能同时测试多个连接。硬件规格是什么?我有核心i7 2c4t、4GB RAM和100GB SSD。丢失连接的问题发生在另一台使用Intel 8c和32GB RAM(生产)的机器上。服务器最多可连接500-800个用户。是否有人拥有流量超过1000个连接客户端的经验?我看到有人实现了数千个连接的模拟,但我不敢相信这是稳定的。很多人都有超过1000个连接的插座,除非你每秒发送大量消息,否则你的硬件应该支持很多。如果不查看实现,就无法对其进行更多的故障排除啊,您应该与pm2一起检查设置。您的tcp_mem可能设置为大带宽,从而增加每个连接的内存使用率。根据你的应用,带宽不是什么大问题