2014-03-01 93 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後,它給了我同樣的錯誤作爲一個簡單的負載測試以上。

希望這可以幫助別人有這個問題。