Linuxサーバーで「通信が遅い」「突然接続できなくなる」「TIME_WAITが大量発生している」 といった症状が出た場合、根本原因として多いのが コネクション数の異常増加です。
本記事では、コネクション数が増える仕組みから、調査コマンド、原因特定、 実務で使える対処法までを体系的に解説します。
目次
Linuxにおけるコネクションとは
Linuxにおけるコネクションとは、TCP/UDPで確立された通信セッションを指します。 特にTCPでは以下の状態が存在します。
- ESTABLISHED(通信中)
- TIME_WAIT(通信終了待ち)
- CLOSE_WAIT(相手終了待ち)
- SYN_SENT / SYN_RECV(接続途中)
これらが異常に増加すると、OSリソースやエフェメラルポートを圧迫します。
コネクション数が増えすぎた時の症状
- 新規通信が張れない
- 外部APIやDB接続が失敗する
- TIME_WAITが大量に残る
- 再起動すると一時的に直る
- アプリは正常だが通信だけおかしい
まず確認すべき基本指標
① 総コネクション数
ss -tan | wc -l
② 状態別コネクション数
ss -tan | awk '{print $1}' | sort | uniq -c | sort -nr
ここで特定の状態(TIME_WAIT / CLOSE_WAIT)が突出していないかを確認します。
状態別に見る異常増加の原因
TIME_WAITが多い場合
原因
- 短命TCP通信の多発
- KeepAlive未使用
- 外部APIへの高頻度アクセス
確認コマンド
ss -tan state time-wait | wc -l
CLOSE_WAITが多い場合
原因
- アプリがソケットをcloseしていない
- バグ・接続リーク
確認コマンド
ss -tan state close-wait
CLOSE_WAITはほぼアプリ不具合です。
SYN_SENT / SYN_RECVが多い場合
原因
- 接続先が応答しない
- FW / NWで遮断されている
- SYN Flood攻撃
ss -tan state syn-sent
どのプロセスが増やしているか特定する
PID単位で確認
ss -tanp
プロセス別集計
ss -tanp | awk '{print $NF}' | sort | uniq -c | sort -nr
特定のJavaプロセスやWebサーバーが突出していれば、そこが原因です。
宛先別に確認する
ss -tan | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr
特定の外部APIやDBに集中していないかを確認します。
よくある原因パターンまとめ
| 症状 | 主な原因 |
|---|---|
| TIME_WAIT大量 | 短命TCP・KeepAlive未使用 |
| CLOSE_WAIT大量 | アプリのclose漏れ |
| SYN_SENT大量 | NW遮断・接続先障害 |
一時的な回避策
TIME_WAIT再利用
sysctl -w net.ipv4.tcp_tw_reuse=1
ポート範囲拡張
sysctl -w net.ipv4.ip_local_port_range="10000 65535"
※ 根本解決ではありません
根本対策(最重要)
- HTTP KeepAlive / HTTP2 を有効化
- DB接続プール導入(HikariCP等)
- 外部API呼び出し回数削減
- 並列数・スレッド数制御
設計時に必ず見るべきポイント
- 1秒あたりの新規接続数
- 通信の寿命(短すぎないか)
- NAT・FWを跨ぐか
- エフェメラルポート上限
まとめ
Linuxのコネクション異常増加は、NW障害のように見えて アプリ設計が原因であることがほとんどです。
状態別に冷静に切り分けることで、数分で原因特定が可能になります。
TIME_WAIT・CLOSE_WAIT・SYN系を正しく見極めることが、 再発防止への最短ルートです。
あわせて読みたい


ファイルディスクリプタ枯渇時の症状と対処
Linuxサーバーで突然アプリケーションが不安定になったり、 「ファイルが開けない」「接続できない」といったエラーが多発する場合、 ファイルディスクリプタ(FD)枯渇…
あわせて読みたい


TIME_WAITが大量発生する原因と対策
Linuxサーバーでネットワーク遅延や接続エラーが増えた際、 ss や netstat を確認すると TIME_WAIT が大量に残っているケースがあります。 TIME_WAIT自体は異常ではあり…
あわせて読みたい


エフェメラルポート枯渇の見抜き方と対処法【TIME_WAITとの関係を理解する】
Linuxサーバーで「突然外部通信ができなくなった」「再起動すると一時的に直る」 といった障害の原因として、見落とされがちなのが エフェメラルポート枯渇です。 本記…
