Tcp 服务器在一定时间后不接受连接
Tcp server not accepting connection after certain time
我正在 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。 ?
我开发过同类型的系统,所以这个问题让我有些怀念。您的问题是 文件描述符:
In Unix and related computer operating systems, a file descriptor (FD,
less frequently fildes) is an abstract indicator (handle) used to
access a file or other input/output resource, such as a pipe or
network connection.
然后,您需要在 linux 服务器中增加此 文件描述符限制 ,如下所示:
编辑内核参数文件/etc/sysctl.conf。添加行 fs.file-max=[new value] 到它。
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
技巧 1:找出当前正在使用的文件描述符数量
# more /proc/sys/fs/file-nr
提示 2:每周添加一个 conjob 以重新启动套接字服务器(Node.js 应用程序)。
希望对你有帮助。
我正在 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。 ?
我开发过同类型的系统,所以这个问题让我有些怀念。您的问题是 文件描述符:
In Unix and related computer operating systems, a file descriptor (FD, less frequently fildes) is an abstract indicator (handle) used to access a file or other input/output resource, such as a pipe or network connection.
然后,您需要在 linux 服务器中增加此 文件描述符限制 ,如下所示:
编辑内核参数文件/etc/sysctl.conf。添加行 fs.file-max=[new value] 到它。
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
技巧 1:找出当前正在使用的文件描述符数量
# more /proc/sys/fs/file-nr
提示 2:每周添加一个 conjob 以重新启动套接字服务器(Node.js 应用程序)。 希望对你有帮助。