[aws][mysql5.6]microインスタンス使用時にメモリ不足になったのでmysqlの設定を調整
AWSでt2.microインスタンスを使用して色々動かしていたら、あるスクリプトの実行時に
Cannot allocate memory - fork(2)
と、メモリ不足のエラーが出てしまいました。
topで見たらmysqlが40%近くメモリを消費していたので調べてみたところ、mysql5.6からテーブルの定義のキャッシュを行う table_definition_cacheのデフォルト値が大きめに設定されているのが原因のようでした。
mysql> show variables like 'table_definition_cache';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| table_definition_cache | 1400 |
+------------------------+-------+
そこでmy.cnfにtable_definition_cache設定を追加 参考サイトに載っていた通りに400に設定しました
# /etc/my.cnf
[mysqld]
table_definition_cache=400
を追加してmysqlをrestart
mysql> show variables like 'table_definition_cache';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| table_definition_cache | 400 |
+------------------------+-------+
400MB くらいだったメモリ使用量が 90MBくらいになり、とりあえずこれでにメモリ不足になっていたスクリプトを動かすことができました。