首页/系统/Linux 内核与性能调优速查/TCP_DEFER_ACCEPT 减少空连接唤醒
本包目录(357 条)
sysctl 内核参数72 条CPU 与调度60 条内存与 OOM58 条磁盘与 IO32 条
网络栈调优98 条
性能分析工具37 条

TCP_DEFER_ACCEPT 减少空连接唤醒

让内核在收到首个数据包后再唤醒 accept, 减少对空连接轮询与唤醒开销, 适合先连接后发数据的服务。

C 用例

C 用例
int secs = 3;
setsockopt(fd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &secs, sizeof(secs));

nginx 对应配置

nginx 对应配置
listen 80 deferred;
它改变的是 accept 唤醒时机, 不改变三次握手本身; 需要连接建立即感知的业务评估后使用。

易错点

  • 对连接后长时间不发数据的协议强行启用, 导致连接迟迟不被处理
  • 忽略它只影响监听 socket 的唤醒语义

数据来源与参考

  • man 7 tcp
  • nginx 官方文档 listen 指令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌