Node.js + Socket.io,build立的连接正在增加

我的node.js + socket.io服务器通过aws ec2实例进行部署。

并有一些networking调整configuration。

echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range echo 60 > /proc/sys/net/ipv4/tcp_keepalive_time echo 10 > /proc/sys/net/ipv4/tcp_keepalive_intvl echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes echo 10 > /proc/sys/net/ipv4/tcp_fin_timeout echo 20000 > /proc/sys/net/core/netdev_max_backlog echo 2048 > /proc/sys/net/core/somaxconn echo 0 > /proc/sys/net/ipv4/tcp_tw_reuse 

我用netstat命令监视连接状态。

 netstat -anl | grep ":22000" | awk '/^tcp/ {t[$NF]++}END{for(state in t){print state, t[state]} }' 

那么,发现“ESTABLISHED”的关系正在稳步增长。

 TIME_WAIT 12 ESTABLISHED 304 LAST_ACK 1 LISTEN 1 

我如何检测exception连接并断开连接?

如果build立的状态连接达到4000以上,则客户端无法连接到服务器。

我如何解决它? 帮我。

显然这是由ping超时造成的。

一个可以帮助的修复方法是:node_modules / socket.io / node_modules / engine.io / lib / socket.js

find这个:

 Socket.prototype.setPingTimeout = function () { var self = this; clearTimeout(self.pingTimeoutTimer); self.pingTimeoutTimer = setTimeout(function () { self.transport.close(); self.onClose('ping timeout'); }, self.server.pingInterval + self.server.pingTimeout); }; 

添加一行self.transport.close();

根据github问题socket.io这应该解决这个问题。 不过,你也可以等待,并希望这将在下一个版本。