TCP纸上谈兵

01 Jan 2014

TCP拥塞算法

约定俗成, 使用发明的地点命名.

sysctl

socket 相关选项

SO_RCVBUF / SO_SNDBUF

读写缓存区大小

SO_RCVLOWAT / SO_SNDLOWAT

SO_REUSEADDR

SO_REUSEPORT

多个进程监听同一个端口, 一个请求由系统分发给一个进程去处理, 减少了业务层级的争用. nginx在1.9.1之后引入 reuseport. 之前使用 accept_mutex 来分发请求.

TCP_NODELAY

Nagle’s algorithm

TCP delayed acknowledgment

都是牺牲Latency以提高Efficiency.

https://www.linkedin.com/pulse/20141113153643-13386347-what-is-delayed-ack-and-how-can-it-be-a-bottleneck-in-your-network

TCP_NODELAY 关闭了Nagle算法, 适用于对实时性要求很高的场景, 如实时网络游戏.

TCP_NODELAY vs TCP_CORK

TCP_DEFER_ACCEPT

在有数据之后再接受连接, 减少了上下文切换的开销.

TCP Fast Open

TCP_FASTOPEN

建立连接时发送cookie信息, 避免了三次握手带来的开销.

net.ipv4.tcp_fastopen

SO_KEEPALIVE

TCP Keep Alive

如果打开KEEPALIVE, 系统的默认参数

也可以使用自定义的选项

SO_LINGER

sysctl

/proc/sys/net/ipv4/

Reference

nginx相关选项

HOME