linux - 如果很多socket连接处于TIMEWAIT状态,是否会影响服务器的性能

标签 linux sockets tcp erlang scalability

假设我有 15000 个连接处于 TIMEWAIT 状态,这是否会影响性能?问题是我从 erlang 连接到 redis,我得到了 redis 超时,并且我正在触发 man y 查询,比如说 1-2 秒内 15000 个。

  • 问题不在于套接字限制

我打开连接火查询并关闭连接,导致许多连接处于 TIMEWAIT 状态,这对我来说没问题,因为我有 60k 可用套接字。

在 erlang 方面,我有 20 秒的等待时间,我认为这足以完成任务,因为 redis 非常快。

可能是什么问题?顺便说一句,我正在使用 eredis 作为库

最佳答案

不要随意打开redis的连接,而是拥有一个稳定的连接池,这样会更有效率。您将消除每次启动 tcp session 时的大量开销。 您还可能会遇到“打开的文件太多”错误。

考虑调整您的 /etc/sysctl.conf (如果您使用的是 Linux)。这个参数绝对值得一看:

  • net.ipv4.tcp_tw_recycle
  • net.ipv4.tcp_tw_reuse
  • net.ipv4.tcp_fin_timeout

关于linux - 如果很多socket连接处于TIMEWAIT状态,是否会影响服务器的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17966741/

相关文章:

java - 使用 EventBus 时处理 Vert.x NetSocket writeQueueFull

python - SIKULI 中的套接字找不到日志记录库并失败

networking - 主机路由表的理解

c++ - 如何在通过 Wine(同一台计算机)运行的 linux 程序和 windows 程序之间共享内存?

linux - 下载多个文件,具有不同的最终名称

c++ - 运算符<<在单例中的重新定义

python - python 脚本 : Linux vs Solaris 上的 Setuid 位

java - 从java服务器发送整数或字符串

tcp - uTorrent 如何在 TCP 和 uTP 之间进行选择?

Javascript Node.js 和 Socket.IO 广播服务器