Nodejs:服务器不会关闭 TCP 连接

Nodejs:服务器不会关闭 TCP 连接

在运行 debian (7.0) 和 nodejs (v0.10.x) 集群的生产服务器中遇到无法关闭的问题一些与客户端的 TCP 连接。

当达到连接限制时,这会导致连接中断。

使用ss -s工具我可以监视某些连接在一段时间后关闭但有些没有关闭。

以下是sysctrl我为了增加最大连接数而使用的配置更改,作为临时解决方法:

net.ipv4.ip_local_port_range = 1024 65500
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.ipv4.tcp_rmem = 4096 16384 33554432
net.ipv4.tcp_wmem = 4096 16384 33554432
net.ipv4.tcp_mem = 786432 1048576 26777216
net.core.netdev_max_backlog = 2000

如何找到瓶颈,解决问题?

答案1

问题是https服务器没有从http服务器继承套接字超时逻辑。

有一个修补自 2013 年 4 月起合并,但仍未合并到稳定0.10分支。

解决方案:

  • 避免https使用,使用一些代理服务器(nginx);
  • 自定义超时处理;
  • 使用高于 的节点版本0.10

相关内容