

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
net.core.somaxconnとは?
net.core.somaxconn は Linux カーネルの設定のひとつで、待ち受けている接続のバックログの最大数を決めます。バックログとは、サーバーが新しい TCP 接続を受け取るときに、まだアプリケーション側が受け入れる準備をしていない接続を一時的に保存しておく列のことです。
たとえば Web サーバーを起動して listen しているとき、外部からの接続要求が来ます。 accept する前に、接続要求は backlog の長さの分だけキューに蓄えられます。net.core.somaxconn がこのキューの上限を決めるため、 backlog の値が大きくても somaxconn が小さければ上限に達してしまい、新しい接続は拒否されたり、遅延したりします。
重要な点は backlog 引数と somaxconn の関係です。 listening の呼び出しで指定する backlog は概ねの目安であり、実際の待ち行列の長さは somaxconn と、時にはカーネルの実装に依存します。つまり backlog の値を大きくしても somaxconn の値を超えることはできません。
確認方法と変更方法
現在の値を確認するには次のどちらかを使います。cat /proc/sys/net/core/somaxconn または sysctl net.core.somaxconn
値を一時的に変更するには、次のコマンドを実行します。sysctl -w net.core.somaxconn=4096
永続的に設定するには、/etc/sysctl.d/ に設定ファイルを作成します。たとえば /etc/sysctl.d/99-somaxconn.conf に以下を追記します。
net.core.somaxconn = 4096
設定を反映するには再起動は不要です。sysctl -p か再起動で適用されます。
実務上のポイント
実務ではリクエストの急増を想定して somaxconn を適切に設定することが重要です。デフォルトの 128 は小さいケースが多く、アクセスが集中するサーバーではバックログ不足でパフォーマンスが落ちることがあります。一般的な Web アプリケーションサーバーでは 512 から 4096 程度に設定するケースがよく見られます。ただし実環境の値は負荷や他の設定に依存するため、負荷テストとモニタリングを併用して適切な値を見つけましょう。
よくある誤解と補足
somaxconn はバックログの“最大値”という意味だけではありません backlog の一部は OS の実装にも影響を受け、実際の待ち行列長は状況により変化します。他の制約として fs.file_max の制限や /proc の設定、システムのリソース状況も関係します。
| 意味 | |
|---|---|
| backlog | listen によって待機する接続の列の長さの目安 |
| somaxconn | バックログ列の最大許容数を決めるカーネル設定 |
| listen | サーバーが新しい接続を受け入れる準備を始める呼び出し |
この設定はWeb サーバーだけでなく、データベース接続プールやその他の TCP サービスにも影響します。大量の同時接続を想定する環境では、適切な somaxconn の値を見つけ、他のバックエンド設定とバランスを取ることが重要です。
net.core.somaxconnの同意語
- バックログの最大値
- net.core.somaxconn がシステム全体で許容するバックログの上限。listen() に渡す待ち接続数を超えないように制限します。
- 待ち行列の最大数
- リスニングソケットが新しい接続を待つための待機行列の容量の上限値。
- リスニングバックログの上限
- リスニング状態のソケットで待機させる接続の最大数。listen() の値がこの上限を超えないよう制御されます。
- ソケット待ちキューの上限
- ソケットが保持する待ち接続のキューの容量の上限値。
- 接続待ち行列の最大長
- 新しい接続を受け付ける前に蓄える待機行列の長さの最大値。
- リスニング待機接続の最大数
- リスニングソケットに対して待機中の接続の最大数。
- 接続受付待ちの最大容量
- 接続を受け付けるまで待機する接続の総容量。
- 待機接続数の上限
- 待機中の接続数の上限値。
- バックログ長の上限
- バックログ(待機接続キュー)の長さに対するシステム上限。
net.core.somaxconnの対義語・反対語
- 最小バックログ長
- バックログの長さを最小化する考え方。接続待機キューの容量を極力小さくする設定で、同時に受け付けられる新規接続の数を抑える意図があります。
- バックログ抑制モード
- 接続待機キューの容量を抑制する設定。急激な接続増加時にキューがすぐ満杯になるように制約する思想です。
- ゼロバックログモード
- バックログをほぼゼロに近づける設定。新規接続の待機をほとんど許容しない方針を示します。
- 待機キューなし設定
- 待機キューを実質的に使わない設定。新規接続はすぐに拒否する、あるいは別処理に回す設計を想定します。
- 低バックログ設定
- バックログの容量を低く設定する概念。ピーク時にも受け入れ数を抑える意図があります。
- バックログ下限ゼロ
- バックログの下限を0に近づける考え方。理論上はゼロを目指しますが、OS側の実装制約で実際は異なる値になることもあります。
- 最小待機キュー容量
- 待機キューの容量を最小化する設計思想。大量の接続を同時に受け付けない前提です。
- 接続拒否優先モード
- 新規接続を受け付けるより拒否を優先するモード。待機キューを使わず、即時の接続拒否を想定します。
net.core.somaxconnの共起語
- バックログ
- ソケットが listen 状態のとき、同時に待機できる接続の数の上限を示すカーネル設定。
- 待ち接続
- 接続要求がソケットのバックログに入るまでの状態の接続のこと。
- リスニングソケット
- listen 状態のソケット。新しい接続はこのソケットのバックログに積まれて処理される。
- listen
- 待ち受け用のソケットを作成・設定するシステムコール・操作。
- accept
- バックログから接続を実際に受け入れるシステムコール。接続が確立するきっかけ
- バックログ長
- バックログの長さ、上限値そのものを指す指標。
- バックログキュー
- 待機中の接続を蓄えるキューのこと。
- TCPバックログ
- TCP 接続のバックログ全般の総称。SYNを含む待機状態を含む概念。
- SYNバックログ
- SYNを待つ接続のバックログ。まだハンドシェイクが完了していない状態の待機。
- tcp_max_syn_backlog
- SYNバックログの最大数を決めるカーネルパラメータ。
- tcp_syncookies
- SYN cookies を有効にする設定。バックログがいっぱいのときの対策として働く。
- デフォルト値
- somaxconn のデフォルト設定値。
- 最大バックログ
- バックログの最大許容値の説明・指標。
- /proc/sys/net/core/somaxconn
- somaxconn の実ファイルパス。値はここから参照・変更可能。
- sysctl
- カーネルパラメータを動的に参照・変更するコマンド/仕組み。
- カーネルパラメータ
- カーネルが持つ設定項目の総称。
- ネットワークスタック
- OS のネットワーク機能の中核。backlog設定はこの機能の一部。
- accept_queue
- 受け付け待ちの接続キュー。accept が取り出す対象となる。
- ネットワーク待ち行列
- ネットワーク関連の待ち行列の総称。backlog もこの一部として扱われる。
net.core.somaxconnの関連用語
- net.core.somaxconn
- Linuxカーネルが待ち受けキューの長さの上限を決めるシステムパラメータ。listenで指定する backlog の最大値はこの somaxconn によって制限される。デフォルトは環境によって128程度が一般的ですが、高負荷環境では増やすことがあります。
- SOMAXCONN
- バックログの上限を表す用語。SOMAXCONN の値は net.core.somaxconn の設定値と対応しており、ソースコード上の定数名から来ています。
- backlog
- リスニングソケットが受け付ける待ち受け接続のキュー長。listen の backlog 引数で指定しますが、実際の長さは net.core.somaxconn で制限されます。
- listen
- ソケットを待ち受け状態にして、外部からの接続を受け付けられるようにするためのシステムコールです。
- accept
- 待ち受けキューに並ぶ接続のうち、実際にアプリ側が使用できる新しいソケットを返します。
- tcp_max_syn_backlog
- 半開き状態のSYNを待つバックログの最大数。大きくすると同時接続の初期ハンドシェイクを待てる数が増えます。
- SYN cookies
- 未完成のハンドシェイクを資源を消費せず処理する技法。SYN flood 攻撃対策として使われます。
- tcp_syncookies
- SYN cookies の有効/無効を切り替えるカーネルパラメータ。1 に設定すると有効化されます。
- /proc/sys/net/core/somaxconn
- somaxconn の現在値を確認・設定するファイル。sysctl コマンドで反映させることができます。
- sysctl
- カーネルパラメータを動的に読み書きするコマンド。永続設定には /etc/sysctl.conf へ追記します。
- /proc/sys/net/ipv4/tcp_syncookies
- SYN cookies の現在値を表示・設定するファイル。1 にすると有効化されます。
- backlog overflow の挙動
- バックログが満杯になると新規接続は拒否されたりすることがあります。状況次第でリトライや拒否の挙動が発生します。
- backlog と accept queue の違い
- backlog は待ち受け全体の上限を指し、accept queue は確立済みでまだアプリが受け取っていない接続の待機列を指します。
- パフォーマンスチューニングのポイント
- 高負荷サーバーでは somaxconn、tcp_max_syn_backlog、tcp_syncookies を適切に設定し、サーバーのリソースと実Trafficに合わせて調整します。
- SOMAXCONN macro の説明
- SOMAXCONN はバックログ長の上限を表すソースコード上の定数ですが、実務では net.core.somaxconn の値が実際の上限として使われます。
- 実務での確認方法
- 現在の backlog 設定値を sysctl や /proc/sys/net/core/somaxconn で確認し、負荷試験や実 traffic でバックログの挙動を観察します。



















