hello-world.jp.net
webエンジニアのメモ。とりあえずやってみる。

[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くらいになり、とりあえずこれでにメモリ不足になっていたスクリプトを動かすことができました。

参考


Related #aws

[ELB]SSL証明書設定の権限を持つIAMユーザPolicy

もともとはAWSの明細情報閲覧と、IAM管理を無効にしたユーザとして、以下のようなPolicy設定を行っていました。

[aws]s3バケットにIP制限をかける

s3にはbasic認証を設定することはできないのですが、IP制限なら設定することができます。

[rails]cap deploy時に複数のAuto Scalingグループにもデプロイしたい

先日、AWSのAuto Scallingを使った際に、cap deploy時にAuto Scaleインスタンスにも自動でデプロイできるようにする必要があったので調べたところ、

s3cmdの設定をプロジェクト毎に管理する

以前、 s3cmdをmacで使う方法 を書きましたが、 プロジェクトごとに異なるバケットを使用している場合は設定ファイルもプロジェクト毎に管理したいです。