【入門編】 ssコマンドによる高度なフィルタリングと状態別ソケット抽出 – トラブルシューティング&ネットワーク運用監視実践ガイド

「サーバーの悲鳴」を聞き逃さないために。ssコマンドでソケットの海を泳ぎ切る技術

現場で障害が起きたとき、皆さんはまず何をしますか?
画面にエラーコードが並び、上司や顧客からの「いつ直るんだ?」というプレッシャーが背中に突き刺さる……そんな修羅場を何度も潜り抜けてきた私から一つ、鉄則をお教えしましょう。

「まずは、サーバーが誰と何をしているかを知れ」

これに尽きます。サーバーという名の「巨大な郵便局」の中で、今どの窓口が混雑していて、どの荷物が止まっているのか。それを可視化する最高の相棒が ss コマンドです。

今日は、教科書の丸暗記ではなく、現場の泥臭い運用から導き出した「本当に使える ss コマンド術」を、少しだけ肩の力を抜いて一緒に紐解いていきましょう。

—

1. 「ソケット」って結局なに? —— 郵便局の「窓口」をイメージしよう

「ソケット」という言葉、少し難しく聞こえますよね。でも大丈夫、郵便局をイメージしてください。

  • サーバー(コンピューター): 郵便局そのもの
  • ポート(80番や443番など): 郵便局の「特定の窓口」
  • 通信相手(クライアント): 手紙を持って並んでいるお客さん
  • ソケット: 窓口で局員とお客さんが向き合ってやり取りしている「対話の現場」

サーバーは同時に何千人ものお客さんをさばいています。ss コマンドは、その膨大な窓口の状況を一瞬でリストアップしてくれる「フロアマネージャー」のような存在なんです。

—

2. 闇雲な検索は卒業! ss でピンポイントに狙い撃つ

昔のエンジニアは netstat を使っていましたが、今の大規模環境では動作が重すぎて使い物になりません。そこで登場するのが ss(Socket Statistics)です。こいつはカーネルの情報を直接見に行くので、爆速なんですよ。

ただ、普通に ss と打つと情報が多すぎて目が回ります。ここで重要なのが「フィルタリング」という技術です。

「今、通信が繋がっている相手だけ見たい!」

障害対応の第一歩は、正常に通信できているものと、止まっているものを分けることです。

# 状態が「確立(established)」している通信だけを抽出する
ss -tn state established
  • -t: TCPの通信だけを見たい(TCPは手紙の到達確認を行う丁寧な通信です)
  • -n: 数字で表示する(ドメイン名に変換しようとすると時間がかかるので、現場では必須です)
  • state established: 「今まさに会話中!」という状態のものだけを絞り込む

これだけで、関係のない待ち受け状態(LISTEN)の窓口を無視して、今まさに大忙しでやり取りしている通信だけを抽出できます。

—

3. 現場で一番使う「ポート指定」テクニック

「Webサーバーが重いぞ!」という連絡が来たら、真っ先に疑うのは http (80) や https (443) の窓口です。そんなときは、こうやって絞り込みましょう。

# 送信元ポートが80番の通信を抽出する
ss -tn sport = :80

# 宛先ポートが443番の通信を抽出する
ss -tn dport = :443

sport は「送信元の窓口」、dport は「宛先の窓口」ですね。
もし、特定のWebサーバーへ大量のアクセスが来ていてパンクしているなら、dport = :443 で絞り込めば、どのクライアント(IPアドレス)が一番行列を作っているか、一目瞭然です。

—

4. もっと深く潜る:状態別ソケット抽出の極意

さらに高度な運用として、こんなケースを想定してみましょう。
「通信が切れたはずなのに、サーバー側でゴミのような接続が残り続けている」……いわゆる TIME-WAIT の溜まりすぎですね。これはサーバーのスタミナ切れ(リソース枯渇)の典型的な症状です。

# 終了処理待ち(TIME-WAIT)がどれくらい溜まっているか確認する
ss -tn state time-wait | wc -l

wc -l は行数を数えるコマンドです。これで「今、終了待ちの列が何人分溜まっているか」が数値で分かります。もしこの数字が数千を超えていたら、すぐにチューニングの検討が必要です。

—

最後に:コマンドは「サーバーとの対話」

いかがでしたか?
ss コマンドは、単なる監視ツールではありません。サーバーという生き物が、今どんな状態で、どこで苦しんでいるのか。それを教えてくれる「健康診断ツール」なんです。

まずは、今日ご紹介したコマンドを、皆さんの検証環境や手元のLinuxサーバーで叩いてみてください。
「あ、今はこれだけ繋がっているんだ」「意外とこのポートが使われているんだな」という気づきが、いつか必ず来る「障害という名の嵐」を乗り越えるための強い武器になります。

エンジニアとしての第一歩、焦らず、一歩ずつ進んでいきましょう。何か困ったことがあれば、またいつでも聞きに来てくださいね!

コメント

タイトルとURLをコピーしました