Node.js Tcp服务器在特定时间后不接受连接
我正在nodejs中实现tcp服务器,它接受来自gps设备的连接,并且代码被永久监控。代码没有崩溃,但在特定时间后服务器不接受任何新连接。一旦我重新启动服务器,它会再次正常工作。我不知道怎么了。操作系统Ubuntu 14.04。感谢您的帮助 编辑: 服务器不接受连接的时间大约为6天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.
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。有没有办法不重新启动服务器。您的意思是更改文件描述符限制?不幸的是,没有