redis.conf详解之tcp-backlog

用法

tcp-backlog 511

用途

linux系统中控制tcp三次握手已完成连接队列的长度。
在高并发系统中,你需要设置一个较高的tcp-backlog来避免客户端连接速度慢的问题(三次握手的速度)。

注意事项

1.已完成连接队列的长度也与操作系统中somaxconn有关,取二者最小min(tcp-backlog,somaxconn)

// linux查看已完成连接队列的长度
$ /proc/sys/net/core/somaxconn
//mac查看已完成连接队列的长度
$ sysctl -a|grep somaxconn

2.已完成连接队列又与半连接队列长度有关

// linux查看半连接队列长度
$ /proc/sys/net/ipv4/tcp_max_syn_backlog
//mac查看半连接队列长度
$ sysctl -a|grep backlog

3.简要介绍下半连接已完成连接
半连接:服务端收到客户端syn后,将连接放入半连接队列。如果半连接队列已满会丢弃,客户端报错connection time out
已完成连接:服务端收到客户端的ack后,从半连接队列中拿出连接放入已完成连接队列。如果已完成连接队列已经满则无法放入,客户端报错read timeout 或者 connection reset by peer

原生注释

# TCP listen() backlog.
#
# In high requests-per-second environments you need a high backlog in order
# to avoid slow clients connection issues. Note that the Linux kernel
# will silently truncate it to the value of /proc/sys/net/core/somaxconn so
# make sure to raise both the value of somaxconn and tcp_max_syn_backlog
# in order to get the desired effect.
tcp-backlog 1

参考文章:

TCP queue 的一些问题
深入探索 Linux listen() 函数 backlog 的含义

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。