SO_REUSEPORT选项

作者: zczhuohuo | 来源:发表于2015-10-30 23:22 被阅读754次

SO_REUSEPORT选项[1]

概述

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

安全性考虑

  1. 第一个进程必须enable了这个选项之后,后续的进程才可以通过enable这个选项将socket绑定到同一个端口上。
  2. 绑定到同一个端口的进程的effective user id必须一致。

上述规定是为了避免hijacking:恶意用户通过监听相同的端口来获取用户信息。

在没有SO_REUSEPORT的年代

在SO_REUSEPORT没有出现之前,多线程编程一般有两种获取到来的请求。

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

SO_REUSEPORT的负载均衡算法

使用(remote_ip, remote_port, local_ip, local_port)来进行哈希,因此可以保证同一个client的包可以路由到同一个进程。但是,当一个listen的进程加进来或者terminate的时候,由于没有实现一致性哈希,结果可能导致有些请求由于路由到另外一个进程上,client-server的三次握手过程可能会被重置。


  1. 本文内容主要来自https://lwn.net/Articles/542629/

相关文章

  • SO_REUSEPORT选项

    SO_REUSEPORT选项[1] 概述 SO_REUSEPOR这个socket选项可以让你将多个socket绑定...

  • 剖析 TCP - SO_REUSEPORT 使用

    1. 概述 在 TCP 应用中,SO_REUSEPORT 是 TCP 的一个选项设置,它能开启内核功能:网络连接分...

  • 惊群的解决办法

    (1)、加锁(2)、SO_REUSEPORT Linux内核的3.9版本带来了SO_REUSEPORT特性,该特性...

  • 单端口映射多进程负载服务器

    一般来说一个端口只能绑定一个进程,然而在 Linux 中其实有一个参数选项 SO_REUSEPORT ,可以让一个...

  • socket so_reuseport

    简单说下SO_REUSEPORT的应用场景, 为什么会用他? 然而在讲解SO_REUSEPORT之前,需要先说下我...

  • SO_REUSEPORT

    , , , , 可以唯一地确一个连接,基于hashmap映射查找 ...

  • 多进程监听一个端口

    SO_REUSEADDR,SO_REUSEPORT,这个给忘记了,搜了好久才找到,做个笔记。 示例程序

  • golang中SO_REUSEADDR和SO_REUSEPORT

    SO_REUSEADDR和SO_REUSEPORT具体作用是什么详情可以参考这篇文章:https://www.ji...

  • SO_REUSEADDR和SO_REUSEPORT作用

    本文内容主要是对SO_REUSEADDR和SO_REUSEPORT异同 的理解和总结,重点记录linux下SO_R...

  • 五.Linux之grep命令

    grep命令选项 grep选项demo 无选项 -c选项 -n选项 -v选项 -i选项 -h选项 -l选项 -s选...

网友评论

    本文标题:SO_REUSEPORT选项

    本文链接:https://www.haomeiwen.com/subject/npifhttx.html