Linuxサーバーの性能チューニングと監視スクリプト作成

Linuxサーバーを長期間安定して運用するためには、性能チューニングリソース監視が不可欠です。本記事では、Linuxサーバーのボトルネックを解消するための基本的なチューニング方法と、日常的な監視を自動化するスクリプトの作成方法を解説します。


1. 性能チューニングの基本方針

Linuxサーバーのパフォーマンスを最適化するには、以下の観点から調整を行います。

  • CPU使用率: プロセスの負荷分散、不要なサービス停止
  • メモリ管理: スワップの最適化、キャッシュ利用の確認
  • ディスクI/O: ファイルシステムチューニング、I/Oスケジューラ調整
  • ネットワーク: TCP設定、同時接続数の調整

まずは現在の状況を把握することが第一歩です。


2. 性能監視に役立つコマンド

Linux標準のコマンドを活用して、リソース状況を定期的に確認しましょう。

CPUとメモリ

uptime      # 負荷平均を確認
vmstat 5    # メモリ・CPUの状況を5秒ごとに確認
top         # プロセス単位でのリソース利用

ディスクI/O

iostat -x 5   # ディスクI/Oの詳細
sar -d 5      # I/O統計

ネットワーク

netstat -tunapl   # 接続状況確認
ss -s             # ソケット統計

3. チューニングの具体例

(1) スワップの使用を抑制

スワップが過剰に使われると応答が遅くなります。

# スワップの利用傾向を確認
free -h

# スワップ抑制設定(値が小さいほどスワップを使わない)
sudo sysctl vm.swappiness=10

(2) ファイルディスクリプタ数の増加

同時接続が多いサーバーでは制限緩和が必要です。

echo "* soft nofile 65535" | sudo tee -a /etc/security/limits.conf
echo "* hard nofile 65535" | sudo tee -a /etc/security/limits.conf

(3) ネットワークのTCP設定

大量接続が発生する場合のチューニング例です。

sudo sysctl -w net.core.somaxconn=1024
sudo sysctl -w net.ipv4.tcp_tw_reuse=1

4. 監視スクリプトの作成

日常的にCPU・メモリ・ディスクの使用状況をチェックし、閾値を超えたらアラートを出すシンプルな監視スクリプトを作成してみましょう。

監視スクリプト例(monitor.sh)

#!/bin/bash

CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=80

# CPU使用率
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}')

# メモリ使用率
MEM_USAGE=$(free | awk '/Mem/ {printf("%.0f", $3/$2 * 100.0)}')

# ディスク使用率(/ パーティション)
DISK_USAGE=$(df -h / | awk 'NR==2 {gsub("%", "", $5); print $5}')

ALERT=""

if [ $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc) -eq 1 ]; then
  ALERT+="CPU usage is high: ${CPU_USAGE}%\n"
fi

if [ "$MEM_USAGE" -gt "$MEM_THRESHOLD" ]; then
  ALERT+="Memory usage is high: ${MEM_USAGE}%\n"
fi

if [ "$DISK_USAGE" -gt "$DISK_THRESHOLD" ]; then
  ALERT+="Disk usage is high: ${DISK_USAGE}%\n"
fi

if [ -n "$ALERT" ]; then
  echo -e "[ALERT]\n$ALERT" | mail -s "Server Alert" admin@example.com
else
  echo "System resources are normal."
fi

実行権限を付与して、cronに登録すれば定期監視が可能です。

chmod +x monitor.sh
crontab -e
# 5分ごとに監視
*/5 * * * * /path/to/monitor.sh

5. まとめ

  • Linuxサーバーの安定稼働にはチューニング監視が両輪
  • ボトルネックの把握にはtopiostatなどの標準コマンドが有効
  • スワップ、ファイルディスクリプタ、TCP設定などで性能改善
  • シェルスクリプトで監視を自動化すれば管理コストを削減

本記事の内容を参考に、あなたのLinuxサーバー環境に合わせたチューニングと監視を実践してみてください。

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