Tcp服务器在一段时间后不能接受连接

我在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。 ?

我曾经在同一types的系统上工作过,所以这个问题对我有些怀念。 你的问题是文件描述符:

在Unix和相关的计算机操作系统中,文件描述符(FD,less fildes fildes)是用于访问文件或其他input/输出资源(例如pipe道或networking连接)的抽象指示符(句柄)。

然后,你需要在你的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 

现在使用以下命令testing新的系统设置:

 #ulimit -a open files (-n) 90000 

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

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

tip1:查明当前正在使用多less个文​​件描述符

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

tip2:每周添加一个conjob来重新启动套接字服务器(Node.js应用程序)。 希望能帮助到你。