[解決済み] mysql Fatal error: cannot allocate memory for buffer pool
質問
MySQLのエラーログがあるのですが、何か心当たりはありますか? ウェブサイトはしばらく機能していますが、数時間後にMySQLが完全にシャットダウンされます。
140919 10:48:27 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140919 10:48:27 [Note] Plugin 'FEDERATED' is disabled.
140919 10:48:27 InnoDB: The InnoDB memory heap is disabled
140919 10:48:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140919 10:48:27 InnoDB: Compressed tables use zlib 1.2.3.4
140919 10:48:28 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
140919 10:48:28 InnoDB: Completed initialization of buffer pool
140919 10:48:28 InnoDB: Fatal error: cannot allocate memory for the buffer pool
140919 10:48:28 [ERROR] Plugin 'InnoDB' init function returned error.
140919 10:48:28 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140919 10:48:28 [ERROR] Unknown/unsupported storage engine: InnoDB
140919 10:48:28 [ERROR] Aborting
140919 10:48:28 [Note] /usr/sbin/mysqld: Shutdown complete
140919 10:48:28 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140919 10:48:28 [Note] Plugin 'FEDERATED' is disabled.
140919 10:48:28 InnoDB: The InnoDB memory heap is disabled
140919 10:48:28 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140919 10:48:28 InnoDB: Compressed tables use zlib 1.2.3.4
140919 10:48:28 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
140919 10:48:28 InnoDB: Completed initialization of buffer pool
140919 10:48:28 InnoDB: Fatal error: cannot allocate memory for the buffer pool
140919 10:48:28 [ERROR] Plugin 'InnoDB' init function returned error.
140919 10:48:28 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140919 10:48:28 [ERROR] Unknown/unsupported storage engine: InnoDB
140919 10:48:28 [ERROR] Aborting
140919 10:48:28 [Note] /usr/sbin/mysqld: Shutdown complete
解決方法は?
TLDR;
Mysql がメモリ不足で再起動できません。適切なスワップファイルが設定されているかどうかを確認してください。
役に立たなかった?それがあなたの問題でないなら、研究を続けるために、より適格な質問があります。
- ec2 サーバーで mysqld サービスが 1 日 1 回停止する
- https://askubuntu.com/questions/422037/optimising-mysql-settings-mysqld-running-out-of-memory
背景
私は、EC2上に構築した最初のシステムでまさにこの問題に直面し、そこでホストされているワードプレスサイトが時々 "Error establishing database connection" でダウンすることが特徴でした。
ログを見ると、OPが投稿したのと同じエラーが出ていました。 このエラーを私が読み解くと(タイムスタンプは削除しています)。
-
Out of memory エラーです。
InnoDB: Fatal error: cannot allocate memory for the buffer pool
-
InnoDB は十分なメモリがないと起動できません。
[ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting
-
mysqld がシャットダウンしています。この文脈では、再起動に失敗していることを意味します。
[Note] /usr/sbin/mysqld: Shutdown complete
チェック
/var/log/syslog
を検索し
マイスル
が得られます。
Out of memory: Kill process 15452 (mysqld) score 93 or sacrifice child
Killed process 15452 (mysqld) total-vm:888672kB, anon-rss:56252kB, file-rss:0kB
init: mysql main process (15452) killed by KILL signal
init: mysql main process ended, respawning
type=1400 audit(1443812767.391:30): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=21984 comm="apparmor_parser"
init: mysql main process (21996) terminated with status 1
init: mysql main process ended, respawning
init: mysql post-start process (21997) terminated with status 1
<repeated>
注意:cronでログがローテートされる前にエラーが発生した場合、アーカイブされたログをgunzipして検索する必要があるかもしれません。
解決方法
私の場合、根本的な問題は、スワップファイルの設定を怠っていたことでした。
を実行することで、設定されているかどうかを確認することができます。
free -m
.
total used free shared buffers cached
Mem: 604340 587364 16976 0 29260 72280
-/+ buffers/cache: 485824 118516
Swap: 0 0 0
上記の例では、Swap: 0はスワップファイルなしを示します。
設定方法のチュートリアルです。
- https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
- https://help.ubuntu.com/community/SwapFaq
大きいことは必ずしも良いことではないことに注意してください より Ubuntuガイド :
収穫逓減とは、次のようなことです。 RAMサイズの2倍以上のスワップ領域が必要な場合 ハードディスクドライブ(HDD)のアクセスはRAMのアクセスより10³ほど遅いので、RAMを増やした方がよいでしょう。 1秒で終わるものが、突然15分以上かかる。 ! さらに、高速なSSD(Solid State Drive)なら1分以上かかることも...。
ここでの他の回答について...
The InnoDB memory heap is disabled
<ブロッククオート
これは本当のエラーではなく、InnoDBが独自のメモリ・アロケータではなく、システムの内部メモリ・アロケータを使用していることを示すだけである。デフォルトはyes/1であり、実稼働環境では許容されます。
ドキュメントによると、このコマンドは非推奨で、MySQL の 5.6 以上のバージョン(および MariaDB と思われる)では削除される予定である。
http://dev.mysql.com/doc/refman/5.6/en/innodb-performance-use_sys_malloc.html
ありがとうございました。 ルーベン・シャーデのコメント
[Note] Plugin 'FEDERATED' is disabled.
<ブロッククオート
FEDERATEDが無効であるというメッセージはエラーではありません。ただ、あなたのmysqlサーバーでFEDERATEDエンジンがオンになっていないことを意味しているのです。デフォルトでは使用されていません。必要ないのであれば、このメッセージは気にしないでください。
関連
-
[解決済み] 親の行を削除または更新できない: 外部キー制約に失敗 - MYSQL
-
[解決済み】MySQL エラー #1133 - ユーザー テーブルに一致する行が見つかりません。
-
[解決済み] MySQLを使用したパーセンタイル値の計算
-
[解決済み] WHEREで集計関数は使用できません "というエラーを回避する方法
-
[解決済み] ローカルマシンからリモートDBをmysqldumpする方法
-
[解決済み] エラー 1044 (42000)。データベース 'db' へのユーザー ''@'localhost'' のアクセスが拒否されました。
-
[解決済み] MYSQLのTIMESTAMP比較
-
[解決済み] SQL エラー - テーブルの定義が正しくありません; auto カラムは 1 つしか存在できません。
-
[解決済み] MySQLのカラムを並べ替えるには?
-
[解決済み】「Error: MySQLが予期せずシャットダウンしました" を解決するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MySQLユーザーDBにパスワードカラムがない - OSXへのMySQLインストール
-
[解決済み] 親の行を削除または更新できない: 外部キー制約に失敗 - MYSQL
-
[解決済み】MySQL 派生テーブルはすべて独自のエイリアスを持つ必要があります。
-
[解決済み】「docker container run」は最低1つの引数を必要とする
-
[解決済み] MySQLで「一意のテーブル/エイリアスでない」場合
-
[解決済み] MySQL エラー: キーの長さがないキー指定
-
[解決済み] JDBC経由でMySQLにUTF-8を挿入しようとすると、"不正な文字列値 "と表示される?
-
[解決済み] WHEREで集計関数は使用できません "というエラーを回避する方法
-
[解決済み] whereステートメントによるmysqlの一括更新
-
[解決済み] MySQLから最後のN行を選択する