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这应该解决这个问题。 不过,你也可以等待,并希望这将在下一个版本。
- SignatureDoesNotMatch $ cordovaFileTransfer
- 亚马逊SES电子邮件不再发送
- 如何处理来自SQS的多个消息?
- 使用Node Lambda通过JDBC连接到AWS Athena时出错
- AWS Lambda函数在IntentHandler调用的函数完成之前返回
- 查找DynamoDB属性未设置*或*大于x的项目
- 原始IP不会传递到AWS Elastic Beanstalk上的单个容器Docker镜像上的容器
- Twilio客户端错误:使用AWS Lambda / AWS API网关进行Twilio IP消息传递
- 使用端口80的AWS Elastic Beanstalk上的WebSocket问题