【本記事もChatrGPT】WS無料枠の t3.micro (1GB RAM) でWordPressを動かしていると、 サーバーがよく止まる。なぜ?
はじめに
AWS無料枠の t3.micro (1GB RAM) でWordPressを動かしていると、
「サーバーがよく止まる」「接続できない」「MySQLが落ちる」といったトラブルが頻発します。
原因は主に メモリ不足(OOM: Out of Memory) です。
この記事では、実際にEC2上で遭遇したトラブルと、
再現性のある安定化手順(スワップ・MySQL・PHP・Docker制限) を記録します。
🔍 問題の発端:サーバーが週3で落ちる
- ブラウザで「応答に時間がかかりすぎました」
- SSH接続できない
- AWSコンソールでは「インスタンス実行中」と表示
原因を調査すると、以下のログが出ていました👇
sudo journalctl -k --since "48 hours ago" | egrep -i 'oom|out of memory|killed process'
Out of memory: Killed process 1321 (mysqld)
👉 MySQL (mysqld) がメモリ不足で強制終了されていました。
🧠 対策の全体像
| 項目 | 内容 |
|---|---|
| 🧩 スワップ領域追加 | RAMが1GBしかないため、2GBスワップを追加 |
| 🐬 MySQL省メモリ設定 | InnoDBを軽量化、最大接続数を50へ |
| 🐘 PHPメモリ制限 | WP_MEMORY_LIMIT = 96M |
| 🐳 コンテナごとの上限設定 | mem_limit と memswap_limit を docker-compose.yml に追加 |
| 💾 定期バックアップ | mysqldump コマンドで自動化予定 |
🧱 ステップ①:スワップ領域を追加する
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
永続化(再起動後も有効に):
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
確認:
free -h
✅ Swap: 2.0GiB が表示されればOK。
🧱 ステップ②:MySQLを軽量化する
cd ~/wordpress
mkdir -p mysql/conf.d
cat > mysql/conf.d/zz-tiny.cnf <<'EOF'
[mysqld]
innodb_buffer_pool_size=96M
innodb_log_file_size=32M
innodb_buffer_pool_instances=1
max_connections=50
performance_schema=OFF
table_open_cache=256
tmp_table_size=16M
max_heap_table_size=16M
skip-name-resolve
innodb_flush_method=O_DIRECT
EOF
cat > docker-compose.override.yml <<'YML'
services:
db:
volumes:
- ./mysql/conf.d:/etc/mysql/mysql.conf.d:ro
YML
docker compose up -d --force-recreate --no-deps db
🧱 ステップ③:WordPressのPHPメモリ制限を追加
docker exec -it wordpress-wordpress-1 bash -lc \
"grep -q WP_MEMORY_LIMIT wp-config.php || sed -i \"/^\/\* That's all, stop editing!.*$/i define('WP_MEMORY_LIMIT','96M');\" wp-config.php"
docker exec -it wordpress-wordpress-1 php -i | grep -i '^memory_limit'
# => memory_limit => 96M => 96M
🧱 ステップ④:各コンテナのメモリ上限を設定
services:
db:
mem_limit: 512m
memswap_limit: 1g
wordpress:
mem_limit: 256m
memswap_limit: 512m
nginx:
mem_limit: 96m
memswap_limit: 256m
docker compose up -d --force-recreate
docker stats
✅ 各コンテナに上限が反映済み!
🏁 結果まとめ
| 項目 | 結果 |
|---|---|
| サーバー停止回数 | 週3回 → 0回に改善 |
| MySQL落ち | 再発なし |
| メモリ使用量 | 70〜150MiBで安定 |
| スワップ | 常時2GiB確保済み |
💬 まとめ
無料枠の t3.micro でも、
- スワップ
- MySQL軽量化
- PHPメモリ制限
- Dockerコンテナ上限
を組み合わせることで、
安定してWordPressを24時間稼働させることが可能 です。
次のステップ
- 🎨 絵画分類AIアプリの統合(Flask + WordPress)
- 🔒 Azure AD B2C連携でログイン制御
- 🧠 ChatGPT API連携の自動記事生成