Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Tcp服务器在特定时间后不接受连接_Node.js_Tcp_Forever - Fatal编程技术网

Node.js Tcp服务器在特定时间后不接受连接

Node.js Tcp服务器在特定时间后不接受连接,node.js,tcp,forever,Node.js,Tcp,Forever,我正在nodejs中实现tcp服务器,它接受来自gps设备的连接,并且代码被永久监控。代码没有崩溃,但在特定时间后服务器不接受任何新连接。一旦我重新启动服务器,它会再次正常工作。我不知道怎么了。操作系统Ubuntu 14.04。感谢您的帮助 编辑: 服务器不接受连接的时间大约为6天 net.createServer(function(sock){ sock.on('data',function(data){ //converting data to ascii.

我正在nodejs中实现tcp服务器,它接受来自gps设备的连接,并且代码被永久监控。代码没有崩溃,但在特定时间后服务器不接受任何新连接。一旦我重新启动服务器,它会再次正常工作。我不知道怎么了。操作系统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

我一直致力于开发同一类型的系统,所以这个问题让我有些怀旧。您的问题是文件描述符:

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

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

编辑内核参数文件/etc/sysctl.conf。将行fs.file max=[new value]添加到其中

 vim /etc/sysctl.conf

 fs.file-max = 500000
应用更改:

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

vi /etc/security/limits.conf
* soft nofile 90000
* hard nofile 90000
应用更改:

sysctl -p
reboot
现在使用以下命令测试新的系统设置:

#ulimit -a
open files (-n) 90000
检查当前打开的文件描述符限制:

# more /proc/sys/fs/file-max
500000
提示1:了解当前使用了多少个文件描述符

# more /proc/sys/fs/file-nr
技巧2:每周添加一个conjob来重新启动socket服务器(Node.js应用程序)。
希望有帮助。

什么是“特定时间”?你能用一个简单的代码例子重现这个问题吗?你能把它寄出去吗?很难找到解决办法,因为我们知道的不多you@Matteo添加了代码和时间信息的外行,之后连接将被接受Hanks@hector。有没有办法不重新启动服务器。您的意思是更改文件描述符限制?不幸的是,没有