[C10K] TCP REUSEPORT

概述

SO_REUSEPOR这个socket选项可以让你将多个socket绑定在同一个监听端口,然后让内核给你自动做负载均衡,将请求平均地让多个线程进行处理。

安全性考虑

为了避免hijacking即恶意用户通过监听相同的端口来获取用户信息
  • 第一个进程必须enable了这个选项之后,后续的进程才可以通过enable这个选项将socket绑定到同一个端口上;
  • 绑定到同一个端口的进程的effective user id必须一致;

在没有SO_REUSEPORT的年代

  • 派一条线程专门进行accept,获取socket后分派给worker线程。这种方法使得进行accept的线程成为了单点,容易成为性能的瓶颈;
  • 多个线程同时进行accept。这种方法的问题是每一个线程accept成功的概率不均匀,导致负载不均衡;

https://www.jianshu.com/p/37216e299bff
https://lwn.net/Articles/542629/

猜你喜欢

转载自blog.csdn.net/sai_j/article/details/79565414