特定时间后Tcp服务器不接受连接

时间:2016-02-28 10:33:55

标签: node.js tcp forever

我在nodejs中实现tcp服务器,它接受来自gps设备的连接,并且永远监视代码。代码没有崩溃,但在一定时间后服务器不接受任何新连接。一旦我重新启动服务器它再次正常工作。我没有任何线索是错的。 OS Ubuntu 14.04。任何帮助表示赞赏。

编辑:

服务器不接受连接的时间大约为6天。

net.createServer(function(sock){
    sock.on('data',function(data){
         //converting data to ascii.
         //parsing data,doing calculation
         //fetching user_id from redis.(i will get device id from gps device, there are user_id associated to device ids). 
         //posting to api using rest-client

    });
});

编辑2: 虚拟内存的大小是否有任何影响。虚拟内存大小约为940mb。 ?

1 个答案:

答案 0 :(得分:0)

我已经开始使用相同类型的系统,所以这个问题对我有些怀旧。您的问题是文件描述符:

  

在Unix及相关计算机操作系统中,文件描述符(FD,   不常用的fildes)是一个抽象的指标(句柄)   访问文件或其他输入/输出资源,例如管道或   网络连接。

然后,您需要在linux服务器中增加文件描述符限制,如下所示:

编辑内核参数文件/etc/sysctl.conf。添加行fs.file-max = [新值]。

 vim /etc/sysctl.conf

 fs.file-max = 500000

应用更改:

sysctl -p

要更改ulimit设置,请编辑文件/etc/security/limits.conf并设置硬限制和软限制。

vi /etc/security/limits.conf
* soft nofile 90000
* hard nofile 90000

应用更改:

reboot

现在使用以下命令测试新系统设置:

#ulimit -a
open files (-n) 90000

检查当前打开的文件描述符限制:

# more /proc/sys/fs/file-max
500000

tip1:了解当前使用的文件描述符数量

# more /proc/sys/fs/file-nr

tip2:添加一个conjob,每周重启你的套接字服务器(Node.js应用程序)。 希望它有所帮助。