SO_REUSEPORT
複数のプロセスがまったく同じポートにbindできるようにするソケットオプション。以後、着信接続の振り分けはカーネルが行う。
従来、マルチコアでサーバーを動かすには、一つのプロセスがacceptしてワーカーに渡すか、全員が同じ待ち受けソケットを継承してaccept()を奪い合うかのどちらかだった。前者は親のループがボトルネックになり、後者はthundering herdか、接続ごとに取るロックのどちらかを招く。2013年のLinux 3.9で導入されたこのオプションは、振り分けをカーネルに移し、接続の4タプルをハッシュしてキューのどれかに割り当てる。nginxではreuseportとして使える。落とし穴は、終了するプロセスが、すでにそのacceptキューに入っていた接続も道連れにすることだ。