この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
メモリ不足を確認・解消する具体的な手順
「cc1plus が Killed された」と分かったら、次は実際にメモリ不足が起きていたかを確認し、再発しないよう対策します。1. OOM Killer に殺されたかを確認する
カーネルが OOM Killer によりプロセスを終了させた場合、メッセージログに痕跡が残ります。# OOM Killer のログを確認する(RHEL 9系 / journal) # journalctl -k | grep -i "killed process" kernel: Out of memory: Killed process 12345 (cc1plus) total-vm:3145728kB anon-rss:2987136kB # /var/log/messages 系がある場合 # grep -i "killed process" /var/log/messages
total-vm と anon-rss がそのプロセスの最大メモリ使用量を示します。2. 現在のメモリ・Swap使用状況を確認する
# メモリと Swap の使用状況を確認する # free -h total used free shared buff/cache available Mem: 1.9Gi 1.6Gi 100Mi 12Mi 200Mi 150Mi Swap: 512Mi 512Mi 0
available がほぼ 0 / Swap の free が 0 になっている場合は、コンパイル中にOOMが起きるのはほぼ確実です。MySQLのソースビルドは項目別に1.5~3GBを要する場面があるため、最低でも 4GB以上のメモリ もしくは 2GB以上のSwap領域 を確保するのが目安です。3. Swap領域を追加する(既存スワップに加算する形)
恒久的に Swap を追加するには、専用ファイルを作って Swap として登録します。# 2GB の Swap ファイルを作成する(dd でゼロ埋めしファイル化) # dd if=/dev/zero of=/swapfile bs=1M count=2048 # chmod 600 /swapfile # mkswap /swapfile # swapon /swapfile # 状態確認 # swapon --show NAME TYPE SIZE USED PRIO /dev/dm-1 partition 512M 0B -2 /swapfile file 2G 0B -3 # 再起動後も有効にする # echo "/swapfile none swap sw 0 0" >> /etc/fstab
並列ビルド数を減らして cc1plus の同時メモリ使用量を抑える
メモリを増やせない場合は、make の並列数を減らして瞬間的なメモリピークを下げる手があります。1. make の並列数を 1 にしてビルドする
# 並列数を 1 にしてシリアルビルドする # make -j1 # 既に並列ビルドを開始してしまった場合は途中で止めて、続きから -j1 で再開 # Ctrl+C で停止 → make -j1 で再開
cmake --build . -j1 でも同じ効果が得られます。2. nice / ionice で他プロセスへの影響を抑える
サーバ上で別サービスを動かしながらビルドする場合は、優先度を下げて他に影響しないようにします。# CPU と I/O の優先度を下げてビルドする # nice -n 19 ionice -c 3 make -j1
nice -n 19 は CPU 優先度を最も低く、ionice -c 3 は I/O を idle クラスに設定します。本番サーバで MySQL をソースから入れ替える際に重宝するパターンです。3. それでも失敗する場合は EC2 のインスタンスタイプを一時的に上げる
AWS EC2 など仮想化環境では、ビルド時だけt3.large(8GB メモリ)にスケールアップして、完了後に元のタイプへ戻すのが現実解です。# AWS CLI でインスタンスタイプを変更する(停止が必要) # aws ec2 stop-instances --instance-ids i-XXXXXXXXXXXXXXXXX # aws ec2 modify-instance-attribute --instance-id i-XXXXXXXXXXXXXXXXX --instance-type "{\"Value\": \"t3.large\"}" # aws ec2 start-instances --instance-ids i-XXXXXXXXXXXXXXXXX
t3.small などに戻せば、コスト増は数十円程度で済みます。g++ 13系 / GCC 14系での新しい cc1plus トラブル
GCC 13 / 14 では C++ 標準ライブラリのテンプレート展開がさらに重くなり、メモリ消費が増えています。古い手順書では「2GB Swap で十分」と書いてあっても、現代の MySQL 8.4 を g++ 13 でビルドすると 3-4GB は瞬間的に必要になります。| 環境 | 推奨メモリ(実メモリ+Swap) | 並列数の目安 |
|---|---|---|
| MySQL 5.7 + GCC 7 | 2GB | -j2 |
| MySQL 8.0 + GCC 9-11 | 3GB | -j1~-j2 |
| MySQL 8.4 + GCC 13-14 | 4GB以上 | -j1(メモリ少なめなら必須) |
| MariaDB 11.x + GCC 14 | 4GB以上 | -j1 |
「ソースからのビルドはハマる」と思ったら、最初から公式パッケージ(dnf / apt)で入れるのが2026年現在のベストプラクティスです。MySQL公式の APT/YUM リポジトリを使えばコンパイル不要で導入できます。
サーバートラブルへの対応力を体系的に身につけませんか?
OOM Killer / Swap / コンパイルエラーは、いずれもLinuxサーバー運用の現場でよく出会うトラブルです。
ネットの断片的な情報に頼るのではなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:clamd(Clam Antivirus)の起動で「timeout」エラーになる時の対処法
- 前のページへ:Let's EncryptのSSL証明書更新処理がエラーになった場合の対処
- この記事の属するカテゴリ:Linuxエラー対処法へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます