概要
KLab株式会社さんの自家製ツールであるmymemcheckを使うと、my.cnf(もしくはSHOW VARIABLESの結果)をもとに、
をチェックすることができます。
mymemcheckはDSAS開発者の部屋:5分でできる、MySQLのメモリ関係のチューニング!からダウンロードできます。
インストール
CPANから必要なモジュールをインストールします。
# cpan install Readonly # cpan install UNIVERSAL::require
モジュールが不足していると、実行時に次のようなエラーメッセージが出力されます。
$ bin/mymemcheck /etc/my.cnf Can't locate Readonly.pm in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at bin/mymemcheck line 7. BEGIN failed--compilation aborted at bin/mymemcheck line 7.
mymemcheck自体はPerlのスクリプトです。適当なディレクトリに置いて実行します。
$ cd ~/bin $ wget http://log.blog.klab.org/support/20061226/mymemcheck.gz $ gunzip mymemcheck.gz
実行
引数にmy.cnfへのパスを渡します。
$ mymemcheck /etc/my.cnf
my.cnfの設定項目が不足していると、次のようなエラーメッセージが出力されます。
$ mymemcheck /etc/my.cnf [ABORT] missing variables: sort_buffer_size net_buffer_length key_buffer_size innodb_additional_mem_pool_size innodb_log_files_in_group
my.cnfに問題がなければ、実行結果は3つのチェック内容に分かれて表示されます。それぞれがタイトル
・システム変数と式
・結果
から成ります。
最低限必要な物理メモリの大きさ
[ minimal memory ]
...
min_memory_needed = global_buffers + (thread_buffers * max_connections)
= 12968804352 + 5505024 * 2000
= 23978852352 (22.332 [G])innodb_log_file_sizeの最大サイズ
[ maximum size of innodb_log_file_size ]
...
innodb_log_file_size < MAX_innodb_log_file_size
134217728 < 6442450944
128.000 [M] < 6.000 [G] ... safe