Linuxサーバーのパフォーマンス監視入門|CPU・メモリ・ディスクの見方と対処法

kento_morota 15分で読めます
社内のAI・IT活用、技術がわかる相手に無料相談。 相談 →
目次

「最近サーバーが遅い気がする」「突然Webサイトが表示されなくなった」――こうした問題が発生したとき、原因を素早く特定できるかどうかは、日頃のパフォーマンス監視にかかっています。

本記事では、Linuxサーバーのパフォーマンス監視について、CPU・メモリ・ディスク・ネットワークの4つのリソースを中心に、監視方法と問題発生時の対処法を解説します。Linuxの基本を復習したい方はLinuxとは?の入門記事を、コマンド操作を確認したい方はLinuxコマンド実践ガイドをご参照ください。

パフォーマンス監視が中小企業のIT運用で重要な理由

大企業のように専任の監視チームがいない中小企業では、サーバーの異変に気づくのが遅れがちです。しかし、パフォーマンス監視を適切に行うことで、以下のようなメリットが得られます。

障害の予兆を早期に検知できる

サーバーが突然ダウンすることは稀で、多くの場合は徐々にリソースが逼迫していく過程があります。CPU使用率の漸増、メモリの空き容量減少、ディスクの使用率上昇などを日常的に監視していれば、障害が発生する前に対処できます。

コスト最適化の根拠になる

「サーバーのスペックが足りないのでアップグレードしたい」という相談を受けたとき、パフォーマンスデータがなければ判断できません。監視データがあれば、本当にスペック不足なのか、アプリケーションの問題なのかを客観的に判断できます。

トラブルシューティングの時間を短縮できる

問題が発生した際、「いつ頃から」「どのリソースが」「どの程度」逼迫しているかがわかれば、原因の特定が格段に速くなります。Linuxのトラブルシューティングガイドとあわせて活用しましょう。

CPU使用率の監視方法と対処法

CPUはサーバーの処理能力を決定する最も重要なリソースの一つです。CPU使用率が持続的に高い状態は、サーバーのレスポンス低下や処理遅延の直接的な原因になります。

topコマンドでCPU状況を確認する

topコマンドは、リアルタイムでシステムの状態を監視する最も基本的なツールです。

# topコマンドの起動
top

# 表示例の見方
# %Cpu(s): 25.3 us,  5.1 sy,  0.0 ni, 68.5 id,  0.0 wa,  0.0 hi,  1.1 si
# us = ユーザー空間の使用率
# sy = カーネル空間の使用率
# id = アイドル(空き)
# wa = I/O待ち(ディスクアクセス待ち)

注目すべきポイントは以下の通りです。

  • us(ユーザー空間)が高い:アプリケーションが多くのCPUを消費している
  • sy(カーネル空間)が高い:システムコールやI/O処理が多い
  • wa(I/O待ち)が高い:ディスクアクセスがボトルネックになっている
  • id(アイドル)が低い:CPUリソースが逼迫している

htopでより見やすく監視する

# htopのインストール
sudo apt install -y htop   # Ubuntu/Debian系
sudo dnf install -y htop   # CentOS/Rocky Linux系

# htopの起動
htop

htopは各CPUコアの使用率がバーグラフで表示され、プロセスの並べ替えやフィルタリングも直感的に操作できます。

mpstatでCPUコアごとの状況を確認する

# sysstatパッケージのインストール
sudo apt install -y sysstat

# 全CPUコアの使用率を2秒間隔で表示
mpstat -P ALL 2

# 特定のCPUコアの使用率を確認
mpstat -P 0,1 2

CPU使用率が高い場合の対処法

CPUを大量に消費しているプロセスを特定し、適切に対処しましょう。

# CPU使用率の高いプロセスを確認
ps aux --sort=-%cpu | head -20

# 特定のプロセスのCPU使用率を監視
pidstat -u 2 5

# 暴走プロセスの停止(PIDを指定)
kill -15 [PID]    # 正常終了を要求
kill -9 [PID]     # 強制終了(最終手段)

プロセス管理の詳細については、Linuxのプロセス管理の記事を参照してください。

メモリ使用量の監視方法と対処法

メモリ不足は、OOM Killer(Out Of Memory Killer)によるプロセスの強制終了など、深刻な障害を引き起こす可能性があります。

freeコマンドでメモリ状況を確認する

# メモリ使用状況を人間が読みやすい形式で表示
free -h

# 表示例
#               total        used        free      shared  buff/cache   available
# Mem:          7.7Gi       3.2Gi       512Mi       256Mi       4.0Gi       4.0Gi
# Swap:         2.0Gi       128Mi       1.9Gi

注意すべきポイントを解説します。

  • availableが重要:freeの値ではなく、availableの値を見る。Linuxはメモリをキャッシュに積極的に使うため、freeが少なくてもavailableが十分なら問題ない
  • Swap使用量:Swapが大量に使われている場合、物理メモリが不足している兆候
  • buff/cache:ファイルシステムのキャッシュ。必要に応じて自動的に解放される

vmstatでメモリの動的な変化を監視する

# 2秒間隔でメモリ・CPU・I/Oの状況を表示
vmstat 2

# 出力の見方
# procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
#  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
#  1  0  12800 524288 102400 4096000    0    0    12    24  156  312 12  3 84  1  0

# si/so(swap in/out)が頻繁に発生している場合、メモリ不足の兆候

メモリ使用量が多い場合の対処法

# メモリ使用量の多いプロセスを特定
ps aux --sort=-%mem | head -20

# 特定プロセスのメモリ使用量を詳細に確認
pmap -x [PID]

# ファイルキャッシュの手動解放(緊急時のみ)
sudo sh -c "echo 3 > /proc/sys/vm/drop_caches"

根本的な対処としては、アプリケーションのメモリリーク修正、不要なサービスの停止、またはメモリ増設を検討しましょう。

ディスクI/Oと使用量の監視方法と対処法

ディスクは、容量の枯渇とI/Oパフォーマンスの両面から監視する必要があります。Linuxのディスク管理の知識があると理解が深まります。

dfコマンドでディスク使用量を確認する

# ディスク使用量を確認
df -h

# 特定のファイルシステムのみ表示
df -h /dev/sda1

# inode使用状況を確認(ファイル数が多い場合に重要)
df -i

ディスク使用率が80%を超えたら警戒、90%を超えたら早急に対処が必要です。

duコマンドでディスク容量を消費している場所を特定する

# ルートディレクトリ直下の使用量を確認
sudo du -sh /* 2>/dev/null | sort -rh | head -20

# 特定ディレクトリ内で大きなファイルを検索
sudo find /var/log -type f -size +100M -exec ls -lh {} \;

# ディレクトリごとの使用量を確認
sudo du -sh /var/log/*

iostatでディスクI/Oを監視する

# ディスクI/Oの状況を2秒間隔で表示
iostat -xd 2

# 出力の見方
# Device  r/s  rkB/s  rrqm/s  %rrqm r_await rareq-sz  w/s  wkB/s  wrqm/s %wrqm w_await wareq-sz  d/s dkB/s  drqm/s %drqm d_await dareq-sz  aqu-sz %util
# sda    15.20  256.00   2.40  13.64   1.20    16.84  8.60  128.00   3.20  27.12   2.40    14.88 0.00   0.00    0.00  0.00    0.00     0.00    0.04  3.20

# %util が100%に近い場合、ディスクがボトルネック
# r_await/w_await が高い場合、I/O待ち時間が長い

ディスク関連の問題への対処法

# 古いログファイルの削除
sudo journalctl --vacuum-size=500M
sudo find /var/log -name "*.gz" -mtime +30 -delete

# 不要なパッケージキャッシュの削除
sudo apt clean           # Ubuntu/Debian系
sudo dnf clean all       # CentOS/Rocky Linux系

# 大きなファイルの特定と対応
sudo find / -xdev -type f -size +500M 2>/dev/null

ログの管理と自動ローテーションについては、Linuxのログ管理ガイドで詳しく解説しています。

ネットワークの監視方法と対処法

Webサーバーやアプリケーションサーバーでは、ネットワークの状態がパフォーマンスに直結します。Linuxのネットワークコマンドの知識が役立ちます。

ssコマンドでネットワーク接続を確認する

# 現在の接続状態の概要
ss -s

# LISTENしているポートの確認
ss -tlnp

# 確立されている接続の確認
ss -tnp state established

# 特定ポートへの接続数を確認
ss -tn state established | grep ":80" | wc -l

iftopでネットワーク帯域を監視する

# iftopのインストール
sudo apt install -y iftop   # Ubuntu/Debian系

# ネットワーク帯域のリアルタイム監視
sudo iftop -i eth0

ネットワーク帯域の使用状況を確認する

# nloadでネットワークトラフィックを視覚的に確認
sudo apt install -y nload
nload eth0

# sarコマンドでネットワーク統計を確認
sar -n DEV 2 5

ネットワーク関連の問題への対処法

接続数が異常に多い場合は、DDoS攻撃や不正なアクセスの可能性があります。ファイアウォールの設定やセキュリティ強化と組み合わせて対処しましょう。

# 接続元IPごとの接続数を集計
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20

# 特定IPからの接続をファイアウォールでブロック
sudo iptables -A INPUT -s [不正なIP] -j DROP

統合的な監視とアラート設定

個別のコマンドでの監視に加えて、統合的な監視体制を構築することで、より効率的な運用が可能になります。

sarコマンドで履歴データを収集する

sarコマンド(sysstatパッケージ)を使えば、パフォーマンスデータを自動的に蓄積し、過去にさかのぼって分析できます。

# sysstatのインストールと有効化
sudo apt install -y sysstat
sudo systemctl enable sysstat
sudo systemctl start sysstat

# 過去のCPU使用率を確認
sar -u

# 過去のメモリ使用率を確認
sar -r

# 特定日のデータを確認
sar -u -f /var/log/sysstat/sa20

シェルスクリプトによる簡易監視アラート

高価な監視ツールを導入しなくても、シェルスクリプトとcronを組み合わせれば、簡易的な監視とアラートが実現できます。

#!/bin/bash
# /usr/local/bin/server-monitor.sh

THRESHOLD_CPU=80
THRESHOLD_MEM=90
THRESHOLD_DISK=85
ALERT_EMAIL="admin@example.com"

# CPU使用率チェック
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print int($2 + $4)}')
if [ "$CPU_USAGE" -gt "$THRESHOLD_CPU" ]; then
    echo "警告: CPU使用率が${CPU_USAGE}%です" | mail -s "[Alert] CPU使用率超過" $ALERT_EMAIL
fi

# メモリ使用率チェック
MEM_USAGE=$(free | grep Mem | awk '{print int($3/$2 * 100)}')
if [ "$MEM_USAGE" -gt "$THRESHOLD_MEM" ]; then
    echo "警告: メモリ使用率が${MEM_USAGE}%です" | mail -s "[Alert] メモリ使用率超過" $ALERT_EMAIL
fi

# ディスク使用率チェック
DISK_USAGE=$(df -h / | tail -1 | awk '{print int($5)}')
if [ "$DISK_USAGE" -gt "$THRESHOLD_DISK" ]; then
    echo "警告: ディスク使用率が${DISK_USAGE}%です" | mail -s "[Alert] ディスク使用率超過" $ALERT_EMAIL
fi

このスクリプトをcronに登録して定期実行します。cronの設定方法はLinuxのcronとスケジュールタスクを参照してください。

# 5分ごとに監視スクリプトを実行
*/5 * * * * /usr/local/bin/server-monitor.sh

本格的な監視ツールの導入

サーバー台数が増えてきた場合や、より詳細な監視が必要な場合は、以下のツールの導入を検討しましょう。

  • Prometheus + Grafana:メトリクス収集と可視化のオープンソースコンビ。Dockerで簡単にデプロイ可能
  • Zabbix:エンタープライズ級の監視ツール。エージェント型で詳細なデータ収集が可能
  • Netdata:インストールが簡単で、リアルタイム監視に特化したツール
  • Mackerel:日本発のSaaS型監視サービス。セットアップが簡単で中小企業に人気

パフォーマンス問題の体系的な調査手順

サーバーのパフォーマンスに問題が発生した場合、以下の手順で体系的に調査すると効率的です。

ステップ1:全体像の把握

# uptimeでシステムの負荷を素早く確認
uptime
# 出力例: 14:23:45 up 30 days,  2:15,  3 users,  load average: 4.32, 3.18, 2.85
# load averageが CPUコア数を超えている場合、処理待ちが発生している

# dmesgでカーネルのメッセージを確認
dmesg | tail -20

ステップ2:リソースのボトルネック特定

# CPU・メモリ・I/Oを一度に確認
vmstat 2 5

# プロセスごとのリソース使用状況
top -bn1 | head -30

ステップ3:原因プロセスの特定と対処

# CPU使用率の高いプロセス
ps aux --sort=-%cpu | head -10

# メモリ使用量の多いプロセス
ps aux --sort=-%mem | head -10

# I/Oを多く使用しているプロセス
sudo iotop -b -n 3

この調査手順は、Linuxトラブルシューティングガイドでもさらに詳しく解説しています。

まとめ:日常的な監視で安定したサーバー運用を実現しよう

本記事では、Linuxサーバーのパフォーマンス監視について、CPU・メモリ・ディスク・ネットワークの各リソースの監視方法と対処法を解説しました。

  • CPU:topやhtopでリアルタイム監視し、高負荷プロセスを特定して対処する
  • メモリ:freeコマンドのavailable値に注目し、Swap使用量の増加を警戒する
  • ディスク:容量とI/Oの両面から監視し、ログの肥大化に注意する
  • ネットワーク:接続数と帯域を監視し、異常なトラフィックを検知する
  • sarコマンドやシェルスクリプトで自動監視とアラートを仕組み化する

パフォーマンス監視は、問題が起きてからではなく日常的に行うことが重要です。まずは基本的なコマンドでの確認を習慣化し、徐々に監視体制を整えていきましょう。

関連する知識として、Linuxカーネルチューニングの基礎バックアップと復元もあわせて学ぶと、より包括的なサーバー運用スキルが身につきます。AIを活用した運用効率化に興味がある方は、Claude Codeセットアップガイドもぜひご覧ください。

#Linux#パフォーマンス#監視
ManageAI 先行モニター企業 募集中|先着5社・2026年11月末まで

生成AIの利用費、「誰が・何のために・いくら」まで見えていますか?

株式会社カイダンと共同開発したAI利用ガバナンスSaaS「ManageAI」は、OpenAI・Azure OpenAI・Claude・AWS Bedrock・Google Vertex AIの費用と利用状況を、部署・利用者・プロジェクト別に可視化します。導入は読み取り専用キーの登録だけ。初期費用0円・月額5万円(税別)で先行モニター企業を募集しています。

ニュースリリースを読む
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

プライバシーポリシーに基づき管理します

関連記事

Related / 9 articles

  1. プログラミング

    DDoS攻撃の仕組みと対策入門|レイヤー別の防御とCDN・クラウドの活用

    DDoS攻撃をボリューム型・プロトコル型・アプリ層に分けて仕組みを解説し、自前サーバーで防げない理由、CloudflareやAWS Shieldの標準防御、オリジンIPの隠し方、レートリミットとBot対策、攻撃を受けたときの初動、費用が跳ね上がるDenial of Walletへの備えまでわかります。

  2. プログラミング

    WAFとは?仕組み・導入パターン・誤検知対策|Webアプリを攻撃から守る実践ガイド

    WAFがファイアウォールやIDSと何が違うのか、シグネチャとマネージドルールの仕組み、Cloudflare WAF・AWS WAF・ModSecurityの比較、フォーム送信がブロックされる誤検知の調査と例外設定、ログ監視、WAFが代替できないことまで実践的に解説します。

  3. プログラミング

    セキュリティヘッダー入門|CSP・HSTS・X-Frame-Optionsの設定と効果を実践解説

    CSP・HSTS・X-Frame-Options・X-Content-Type-Optionsなど主要セキュリティヘッダーが防ぐ攻撃と、CSPのReport-Onlyからの段階導入、nonce/hash、HSTS preloadの不可逆リスク、Nginx・Next.js・Astroでの設定例、確認方法を解説します。

  4. プログラミング

    クラウドの通信費(Egress)入門|データ転送量課金の仕組みと転送コストを抑える設計

    クラウドの「受信無料・送信有料」の原則、AZ間・リージョン間・インターネット向けの単価差、NATゲートウェイ処理料の罠、CDNで転送量を減らす方法、バックアップやログ転送の見落とし、請求書で転送料を特定する手順を解説。想定外の請求を防げます。

  5. プログラミング

    秘密情報をGitに入れない仕組み|.gitignore・git-secrets・履歴から漏れた鍵の削除

    APIキーや.envをGitにコミットしてしまう典型経路と、.gitignore・.env.exampleの運用、pre-commitでのgitleaks検知、GitHub secret scanningの活用、漏れた鍵の無効化と履歴書き換え(git filter-repo)の手順を解説。仕組みで再発を防げます。

  6. プログラミング

    開発・ステージング・本番環境の分離設計|環境差分をなくす構成とアクセス制御

    開発・ステージング・本番それぞれの目的と、構成をコードで揃える方法、環境別の設定注入、本番データを使わないテストデータ戦略、ステージングの保護(Basic認証・IP制限・noindex)、コストを抑える運用までを解説。環境差分による本番障害を防げます。

  7. プログラミング

    ngrok・Cloudflare Tunnelでローカルを公開|Webhook開発とデモ環境の作り方

    NAT内のローカル環境にStripeやLINEのWebhookを届けるトンネリングの仕組みを解説。ngrok・Cloudflare Tunnel・localtunnelの比較、固定ドメインと認証、リクエスト検査、公開時のセキュリティ、自宅サーバー公開への応用までわかります。

  8. プログラミング

    ローカル開発環境のHTTPS化|mkcert・hostsファイル・自己署名証明書の正しい使い方

    ローカル開発をHTTPS前提にすべき理由(Secure Cookie・Service Worker・OAuth)と、mkcertでローカルCAを作りhostsで独自ドメインを割り当ててVite・Next.js・Dockerで使う手順を解説。証明書警告を無視する癖の危険も理解できます。

  9. プログラミング

    localhost・0.0.0.0・127.0.0.1の違い|ポートとUnixソケットを理解して「つながらない」を解決

    localhost・127.0.0.1・0.0.0.0の意味の違い、Dockerで外から接続できない原因、host.docker.internal、ポート競合の調べ方、Unixソケットの利点と権限、1024未満ポートの制約を解説。「つながらない」を仕組みから解決できます。

ManageAI

先行モニター企業 募集中

生成AIのコストを「部署別」に、請求書より先に。

先着5社限定・2026年11月末まで。初期費用0円・月額5万円(税別)で、正式版と同等の機能に加え、開発者と伴走者による導入支援を追加費用なしで提供します。プロンプト原文は一切取得しません。

株式会社カイダン × Harmonic Society株式会社の共同事業|読み取り専用キーの登録だけで導入できます