MySQが落ちる トラブルシューティング Cannot allocate memory for the buffer pool
概要
AWS E2 インスタンス上に MySQL, SonarQube インストールし起動するものの
MySQL が落ちるという事象が発生。
ログを見ると以下のエラーが。。
- /var/log/mysqld.log
1 | InnoDB: mmap(137363456 bytes) failed; errno 12 |
割りあてるメモリがないという話。
なので、メモリを作ります。
対策 1. swap 領域を作成する
swap 領域作成
1 | // 空ファイル作成 |
swap 領域確認
1 | # free |
mysql 再起動
対策 2. innodb_buffer_pool_size の割当を増やす
現在設定されている innodb_buffer_pool_size 確認
1 | $ mysql -u <user> -p<pass> <db> -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size'" |
エラーログにあった 137363456 を下回ってるのがわかります。
この割当メモリを増やします。
my.cnf の場所探し
左から順に検索し該当するファイルがあればその my.cnf を参照します。
/etc/my.cnf → /etc/mysql/my.cnf → /usr/etc/my.cnf → ~/.my.cnf
1 | # mysql --help | grep my.cnf |
メモリ追加
自分の方では
my.cnf 上に innodb_buffer_pool_size の設定項目がなかったので
追加しました。
- my.cnf
mysql 再起動
増えているか確認
1 | $ mysql -u <user> -p<pass> <db> -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size'" |
今回発生していたエラーログが消えました。
MySQが落ちる トラブルシューティング Cannot allocate memory for the buffer pool
https://kenzo0107.github.io/2016/05/19/2016-05-20-mysql-cannot-allocate-memory-for-the-buffer-pool/