2014-03-01 62 views
2

我的应用程序已经开始接收越来越多的流量,现在有几天我正在打1000个并发连接。在那个时候,由于某种原因,我的服务器停止接受我的连接,他们只是关闭了。NodeJS停止接受1000个并发连接后的新连接

NodeJS服务器的背后是HAProxy服务器,所以我可以的HAProxy的统计页面,当我我得到Resp errors确切的错误对各地1000个并发连接上看到的是:

“期间,连接重置转移“

这使我相信,NodeJS只是拒绝新的连接。在这一点上,我开始研究如何了连接该节点可以处理,所以我做了以下内容:

将此添加到我的sysctl.cfg

fs.file-max = 2097152 
net.core.rmem_max = 16777216 
net.core.wmem_max = 16777216 
net.ipv4.tcp_rmem = 4096 87380 16777216 
net.ipv4.tcp_wmem = 4096 16384 16777216 
net.core.somaxconn = 32768 
net.core.netdev_max_backlog = 32768 
net.ipv4.tcp_max_syn_backlog = 8192 
net.ipv4.tcp_syncookies = 1 
net.ipv4.ip_local_port_range = 1024 65535 
net.ipv4.tcp_tw_recycle = 1 
net.ipv4.ip_nonlocal_bind = 1 

的方式,我开始我的节点服务器是这样的:

Login to the EC2 from my terminal on Mac OSX, and write: 
sudo su 
cd node/ 
ulimit -n 10000 
forever start server.js 

哦,注意,HAProxy的服务器上我在sysctl.cfg相同entires,也有调升maxconn128000

林相当肯定这里的问题是节点服务器,但不明白为什么节点仍然似乎最大1000千连接?

这里的任何想法?我想出了什么尝试的想法。

回答

0

找到解决方案。

我必须安装故宫模块posix

在我的应用我加入

var posix = require('posix'); 

posix.setrlimit('nofile', { soft: 15000 }); 

我在哪里我连15K TCP连接和15K后,它给了我同样的错误作为一个简单的负载测试以上。

希望这可以帮助别人有这个问题。