首页/系统/Linux 内核与性能调优速查/SO_REUSEPORT 多进程监听分流
网络栈调优98 条

SO_REUSEPORT 多进程监听分流

多个进程绑定同一端口由内核按流哈希分流, 替代单进程 accept 的锁竞争; 监听前各进程都要设置该选项。

C 用例

C 用例
int one = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &one, sizeof(one));
bind(fd, addr, addrlen); listen(fd, backlog);
对比 SO_REUSEADDR解决地址重用/时间等待问题
对比单 accept 模型多进程各自 accept, 减少惊群与争抢

易错点

  • 进程重启窗口内流量被哈希到已退出进程的队列, 需要优雅退出设计
  • 未评估 UDP 场景哈希在负载变化后的失衡

数据来源与参考

  • man 7 socket
  • Linux Documentation/networking/scaling.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌