Socket::SOMAXCONN

net.core.somaxconnはTCPソケットが受け付けた接続要求を格納する、キューの最大長です。backlog > net.core.somaxconnのとき、キューの大きさは暗黙にnet.core.somaxconnに切り詰められます。

net.core.somaxconnについて調べてみた - 祈れ、そして働け ~ Ora et labora

macOS の場合

$ ruby -e 'require "socket"; puts Socket::SOMAXCONN'
128

$ sysctl kern.ipc.somaxconn
kern.ipc.somaxconn: 128

server.listen(Socket::SOMAXCONN)

SOMAXCONNの値で server.listenするコード。

require 'socket'

server = Socket.new(:INET, :STREAM)
addr = Socket.pack_sockaddr_in(4481, '0.0.0.0')
server.bind(addr)
server.listen(Socket::SOMAXCONN)

connection, _ = server.accept

ファイルディスクリプタ

個人のmacOS上の結果は下記。

# ソフトリミット
$ ulimit -Sn
256

# ハードリミット
$ ulimit -Hn
unlimited

Rubyを使って確認してみる。

> Process.getrlimit(:NOFILE)
=> [256, 9223372036854775807]

ファイルディスクリプタについて理解する - Qiita