コネクション(コネクション)
ネットワーク上の論理的接続。TCP コネクション・DB コネクション・WebSocket 等を指し、2026年は HTTP/3 (QUIC) と Connection Pooling が高速化の鍵。
概要
コネクション (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 推奨
コネクション種別比較表
| 種別 | プロトコル | 確立コスト | 同時接続限界 | 用途 |
|---|---|---|---|---|
| TCP | L4 | 1-RTT (50-200ms) | 65535ポート×IP | HTTP/SSH 等 |
| HTTP/2 | TCP+TLS | 2-RTT (100-400ms) | 1000+/接続 | Web 主流 |
| HTTP/3 (QUIC) | UDP+TLS 1.3 | 1-RTT/0-RTT | 数百+/接続 | モバイル最適 |
| WebSocket | HTTP Upgrade | 1-RTT+upgrade | 10,000-100,000 | リアルタイム |
| gRPC | HTTP/2 | 2-RTT | 100+ Stream/接続 | マイクロサービス |
| PostgreSQL | TCP+TLS | 5-30ms | max_connections=100 | DB |
自作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 が定番