Inux 3.9的 socket 选项so_reuseport

May 07, 2013 | 0 Minute Read

   最近老看别人提起选项SO_REUSEPORT, 应该是Google 工程师做的一个修改,允许里inux tcp程序,可以多个进程绑定到同一个端口上。

这样多个进程在accept同一个端口上面过来的连接和数据。这样在多核cpu 上面更能充分发挥多核的优势。 这个patch的改进,就是让这种应用场合更简单性能更好吧。比如连接负载在多线程(或进程)之间分布更均匀,避免“惊群” 之类的。

    Nginx本来就有实现多进程在同一个socket上面 accept,然后通过锁来避免多进程竞争(惊群?)的。可以对比代码看一下以前的常规用法是什么样的。

lwn里面的文章

The SO_REUSEPORT socket option

https://lwn.net/Articles/542629/