nginx のモデルは、自分がマスターワーカーであることを認識しています
黄舟2017-05-31 10:39:23
これは、同時に 1 つを再利用する複数のプロセスである必要がありますsocket
ただし、最新の linux
では、複数の linux
中,多个socket
同时监听同一个端口也是可能的,在Nginx 1.9.1
が同じポートを同時にリッスンすることができます。この動作は Nginx 1.9.1
以降でもサポートされています。
linux
3.9
以降のカーネルは、同じポート上で複数の linux
3.9
以上内核支持SO_REUSEPORT
选项,即允许多个socket
bind/listen
在同一个端口上。这样,多个进程就可以各自申请socket
监听同一个端口,当数据来时,内核做负载均衡,唤醒监听的其中一个进程处理,用法类似于setsockopt(listener, SOL_SOCKET, SO_REUSEPORT, &option, sizeof(option))
bind/listen
を許可する
setsockopt(listener, SOL_SOCKET, SO_REUSEPORT,) と似ています。 &オプション、sizeof (オプション))
SO_REUSEPORT
选项可以有效地解决epoll
Thundering herd 問題の使用: 特定のテストについては、以下の例を参照してください: ThunderingHerdTest.cpp
オプションの説明については、「SO_REUSEPORT ソケット オプション」を参照してください。質問者の疑問については、記事内の次の文が答えとして使用できます。
SO_REUSEPORT
である場合のみです。つまり、プロセスが同じポートにバインドできるのは、プロセスが同じ
Nginx
と effective user ID
については、「NGINX 1.9.1 の SO_REUSEPORT による生産性の向上」を参照してください。