タグ

2019年2月22日のブックマーク (1件)

  • Rubyでも SO_REUSEPORT 使いたい! - ローファイ日記

    一般に同じアドレスを同じポートではlistenできない。しかし、ソケットのオプションに SO_REUSEPORT というものがあり、Linuxではカーネル3.9以降で利用できる。 ソケットを作成した後に setsockopt(2) で SO_REUSEPORT が有効になるように指定すると、同じアドレス・同じポートでのbind/listenが可能になり、リクエストが来た際にはリスンしているソケットそれぞれに回されていく。 ただ、この機能はRubyの TCPServerクラス ではすぐには利用できない。 TCPServer#new/open の終了時点でアドレスがリスンされ、setsockoptするタイミングがないため。ではどうするかというと、 Socket クラスでの各メソッド Socket#setsockopt/bind/listen を直接使えば良い。 require 'socket'

    Rubyでも SO_REUSEPORT 使いたい! - ローファイ日記
    motchang
    motchang 2019/02/22
    “Nginx は、オプションでSO_REUSEPORTが有効になり、各ワーカでリスンするようになるらしい。 ” ほえー