突然のサーバー容量不足でサイトが停止した際の緊急対応手順と、事前に防ぐための監視・運用方法を実案件の経験をもとに解説します。
サーバー容量不足、こんな経験ありませんか?
「なぜかサイトが表示されない」「管理画面にログインできない」「500エラーが頻発している」
このような症状で慌ててサーバーを確認すると、ディスク使用率が100%になっていた——そんな経験をお持ちのWeb担当者の方も多いのではないでしょうか?
サーバー容量不足によるサイトダウンは、売上機会の損失や企業の信頼性に直結する重大なトラブルです。しかし、適切な対応手順と予防策を知っていれば、被害を最小限に抑えることができます。
横浜でWeb制作を20年以上手がけてきた弊社では、数多くのサーバートラブルに対応してきました。今回は、実際の案件で培った緊急対応のノウハウと効果的な予防策をご紹介します。
緊急時の対応手順:まずは復旧を最優先に
1. 現状確認とディスク使用量のチェック
まずは冷静に状況を把握しましょう。サーバーにSSHでアクセスし、以下のコマンドでディスク使用状況を確認します。
# ディスク使用量の確認
df -h
# ディレクトリごとの使用量確認
du -sh /* | sort -hr
あるクライアントでは、ECサイトの商品画像が数ヶ月で20GB近く蓄積され、50GBのサーバー容量を圧迫していました。この確認作業により「どこに問題があるか」を素早く特定できます。
2. 一時的な容量確保
緊急時には、まず一時的にでも容量を確保してサイトを復旧させることが重要です。
# ログファイルの圧縮・削除
find /var/log -name "*.log" -type f -size +100M -exec gzip {} \;
# 古いバックアップファイルの削除
find /backup -name "*.sql" -mtime +30 -delete
# 不要なキャッシュファイルの削除
rm -rf /tmp/*
注意点: 削除作業は慎重に行ってください。重要なファイルを誤って削除すると、復旧がより困難になります。必ず事前に確認し、可能であればバックアップを取ってから実行しましょう。
3. アプリケーション固有の対応
WordPressサイトの場合:
# 未使用のメディアファイル確認
wp media list --allow-root | grep -v "Attached"
# リビジョンの削除
wp post delete $(wp post list --post_status=revision --format=ids --allow-root) --allow-root
Laravelアプリケーションの場合:
# ログファイルのクリア
php artisan log:clear
# キャッシュのクリア
php artisan cache:clear
php artisan view:clear
php artisan route:clear
実際に、あるクライアントのWordPressサイトでは、5年間蓄積されたリビジョンデータが8GBにも達していました。これを削除することで、即座に容量を確保し、サイトを復旧させることができました。
根本的な解決策:サーバー容量の拡張
一時的な対応でサイトが復旧したら、次は根本的な解決を図ります。
クラウドサーバーでの容量拡張
AWS EC2の場合:
- EBSボリュームサイズの拡張
- OSレベルでのパーティション拡張
# パーティションの拡張
sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
さくらのクラウドの場合:
コントロールパネルからディスクサイズを拡張後、同様にOS側での拡張作業が必要です。
弊社のクライアントでは、初期20GBで運用していたECサイトを50GBに拡張し、その後の売上拡大に伴う画像増加にも対応できるようになりました。結果として、サイトダウンによる販売機会の損失がゼロになり、月間売上が安定して向上しています。
予防策:監視とメンテナンスの自動化
1. ディスク使用量監視の設定
定期的な監視により、容量不足を事前に検知できます。
#!/bin/bash
# disk_monitor.sh
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
THRESHOLD=80
if [ $USAGE -gt $THRESHOLD ]; then
echo "警告: ディスク使用量が${USAGE}%に達しました" | mail -s "ディスク容量警告" [email protected]
fi
このスクリプトをcronで定期実行することで、使用量が80%を超えた時点でメール通知を受け取れます。
2. ログローテーションの設定
# /etc/logrotate.d/webapp
/var/log/webapp/*.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 644 www-data www-data
}
3. 自動バックアップとクリーンアップ
#!/bin/bash
# backup_cleanup.sh
# 7日以上古いバックアップファイルを削除
find /backup -name "*.tar.gz" -mtime +7 -delete
# データベースバックアップの実行と古いファイルの削除
mysqldump -u root -p database_name > /backup/db_$(date +%Y%m%d).sql
find /backup -name "db_*.sql" -mtime +14 -delete
あるクライアントでは、この自動化により、手動でのメンテナンス工数が月20時間から2時間に削減されました。その結果、Web担当者がより戦略的な業務に集中できるようになり、Webサイトからの問い合わせが30%増加しています。
よくある失敗とその回避法
失敗例1:急いでファイルを削除して必要なデータまで消してしまう
緊急時ほど冷静な判断が必要です。削除前には必ず以下を確認してください:
- ファイルの作成日時
- ファイルの種類と用途
- アプリケーションへの影響
失敗例2:監視を設定したが通知に気づかない
複数の通知手段を用意しましょう:
- メール通知
- Slackなどのチャットツール連携
- SMS通知(重要度の高い場合)
失敗例3:容量拡張後のOS側設定を忘れる
クラウドサーバーでディスクサイズを拡張しても、OS側でパーティションを拡張しなければ使用できません。必ずセットで実行してください。
まとめ:今すぐ始められる対策
サーバー容量不足によるサイトダウンは、適切な対策により確実に防げるトラブルです。まずは以下の3点から始めてみてください:
- 現状把握:
df -hコマンドで現在のディスク使用量を確認 - 監視設定:使用量80%でアラート通知を設定
- 定期メンテナンス:月1回のログファイル確認とクリーンアップ
これらの対策により、サイトダウンのリスクを大幅に軽減し、安定したWebサイト運用を実現できます。結果として、ユーザーの信頼性向上と売上機会の確保につながります。
サーバー運用に不安がある、または専門的なサポートが必要な場合は、ぜひ弊社にご相談ください。20年以上の実績を活かし、お客様のWebサイトを安定稼働させるお手伝いをいたします。