ネットワーク
中級

コネクション(コネクション)

ネットワーク上の論理的接続。TCP コネクション・DB コネクション・WebSocket 等を指し、2026年は HTTP/3 (QUIC) と Connection Pooling が高速化の鍵。

0 回閲覧
0 いいね
2026/5/2 更新
関連タグ
ネットワーク
TCP
Pool

概要

コネクション (Connection) はネットワーク通信における2つのノード間の論理的接続状態。TCP コネクション (3-way handshake で確立)、データベースコネクション (DBドライバ経由)、WebSocket (HTTP Upgrade で常時接続)、gRPC (HTTP/2 Stream)、SSH/SFTP 等、多様な層で使われる。

2025-2026年の主流変化は HTTP/3 (QUIC) の本格普及。Cloudflare 利用ドメインの 78%、Google サービスの 95%、YouTube/Netflix 動画配信の 88% が HTTP/3 化済み (W3Techs 2026年4月)。QUIC は UDP ベースで 0-RTT 接続再開を実現し、TCP+TLS 比でモバイル環境での平均接続確立時間を 380ms → 90ms に短縮。

データベースコネクションでは Connection Pooling が必須技術。PostgreSQL では PgBouncer (Transaction Mode) や PostgreSQL 17 標準の Built-in Pooler、MySQL では ProxySQL が定番。1コネクション確立コストは 5-30ms、Pool でこれを 0.1-1ms に削減可能。

主な特徴・仕組み

  • TCP 3-way handshake: SYN → SYN-ACK → ACK の3パケット、平均 RTT×1.5、東京-米西海岸で約 150ms
  • TCP+TLS 1.3: handshake 計 1-RTT、初回接続 200-300ms (vs HTTP/2 + TLS 1.2 の 400-500ms)
  • HTTP/3 QUIC: 0-RTT 再開対応、初回 1-RTT、再接続 0ms (TLS Session Resumption)
  • DB コネクションプール: 最大同時 50-200本、アイドル回収 30-300秒、Acquire wait queue
  • WebSocket: HTTP Upgrade → 常時接続、ping/pong 30秒間隔、メモリ消費 1接続 50-200KB
  • gRPC HTTP/2 Stream: 1コネクション内 100+ ストリーム多重化、Head-of-Line Blocking 解消
  • Connection Reuse: HTTP Keep-Alive で 1接続 100+リクエスト処理、TLS handshake コスト削減
  • タイムアウト: TCP idle 7200秒 (2時間) デフォルト、HTTP は 60-300秒、DB は 30-600秒
  • Linux 上限: net.core.somaxconn=128 → 65535 推奨、/proc/sys/fs/file-max=1048576 推奨

コネクション種別比較表

種別プロトコル確立コスト同時接続限界用途
TCPL41-RTT (50-200ms)65535ポート×IPHTTP/SSH 等
HTTP/2TCP+TLS2-RTT (100-400ms)1000+/接続Web 主流
HTTP/3 (QUIC)UDP+TLS 1.31-RTT/0-RTT数百+/接続モバイル最適
WebSocketHTTP Upgrade1-RTT+upgrade10,000-100,000リアルタイム
gRPCHTTP/22-RTT100+ Stream/接続マイクロサービス
PostgreSQLTCP+TLS5-30msmax_connections=100DB

自作PC でのコネクション実験・開発

ネットワーク開発・負荷試験用 PC 構成:

  • CPU: Ryzen 9 9900X (12C24T, ¥99,800) — k6/wrk2/locust 多重起動、10万同時接続シミュレーション
  • メモリ: DDR5-6000 64GB (¥49,800) — 1接続 50KB×100,000 = 5GB+OS+ツール
  • ストレージ: NVMe Gen4 SSD 2TB (¥28,800) — pcap キャプチャデータ保管
  • NIC: Intel X710-T4L 10GbE (¥98,000) または Mellanox ConnectX-6 25GbE (¥148,000)
  • 解析ツール: Wireshark 4.4 / tshark / tcpdump / mitmproxy 11 / curl 8.10
  • 負荷試験: k6 0.55 / wrk2 / hey / Apache JMeter 5.6

コネクションと類似概念の違い

  • Connection vs Session: Connection は L4-L5 の通信路、Session は L7 のアプリ状態 (Cookie/Token)
  • Connection vs Stream: Stream は HTTP/2 等の単一 Connection 内の論理チャネル
  • Connection vs Socket: Socket は OS API、Connection は確立済みの通信状態

よくある質問(FAQ)

Q1: HTTP/3 を自分の Web サイトで有効化する方法は? A: Cloudflare/Fastly/AWS CloudFront 等の CDN を使えばデフォルトで有効、自前運用なら Nginx 1.25+ + BoringSSL or Caddy 2.7+ で設定数行。Let's Encrypt 証明書も対応済み。

Q2: DB コネクションプールサイズの最適値は? A: (コア数 × 2 + ディスク数) が古典的目安だが、PostgreSQL 公式推奨は max_connections=100 前後 + PgBouncer で外部プーリング。アプリ側 Pool は CPU コア数の 1.5-3倍 (Ryzen 9 12C なら 18-36) が実用的。

Q3: 自宅サーバで 100,000 同時 WebSocket 接続を捌くには? A: Linux カーネル設定 (file-max/somaxconn/tcp_max_syn_backlog 上限引上げ) + epoll ベースサーバ (Node.js/Go) + 64GB+ メモリ。実装言語別に Go > Rust > Node.js > Java > Python の順で省メモリ。RTX 4090+ ではなく CPU+メモリ重視。

まとめ

  • コネクション = ネットワーク論理接続、TCP/HTTP/WebSocket/gRPC/DB 等で多様
  • 2025-2026年は HTTP/3 (QUIC) が標準化、0-RTT 再開で接続時間 75% 削減
  • Connection Pool は DB アクセスで必須、PgBouncer/ProxySQL で実装
  • 自作PC で 10万同時接続試験は Ryzen 9 + 64GB DDR5 + 10GbE NIC が定番
この記事について
カテゴリーネットワーク
難易度中級
作成日2026/5/2