假设我有 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/