一ヶ月くらい前に、遺伝的アルゴリズム(GA)によるサーバの自動チューニングという記事を投稿させて頂きました。本稿はその続編(続報)になります。
遺伝的アルゴリズムを利用したサーバの自動チューニングは手軽で便利な半面、結果を出すためには時間が掛かります。サーバに負荷を長時間掛けなくてはいけないこの方法は、実運用に入ったサーバでの実行は好ましくありません。
そこで、ユーザの比較的少ない早朝に短時間負荷試験をして、その結果を翌日に持ち越し探索を継続するという方法を考案しました。 継続的パフォーマンスチューニング という言葉の使い方が正しいか分かりませんが毎日一時間のパフォーマンスチューニングを繰り返し、パフォーマンスの良い組み合わせを探していくことを目標にしています。
**ご注意**
サーバソフトウェア再起動が発生する(させる)ものであるため短時間サービスが停止する可能性があることなど、この方法には問題点もあり「アイデア」とさせていただいております。
前稿の遺伝的アルゴリズム(GA)によるサーバの自動チューニングで紹介した拙作のgargorというソフトウェアに以下のような機能を加えました。
- 世代情報のファイルへの保存
- デプロイ失敗時の復旧
- コマンドラインオプションによる設定
また、これをバージョン1.0.0
としてリリース致しました。
インストール方法などは変わっていませんが、CLIをthorにした関係で実行時にサブコマンドとしてtune
が必要になっています。
インストール
$ [sudo] gem install gargor
実行
$ gargor tune [options] [DSL]
DSLファイルの書き方は前稿を参照ください
ついでに、実行の経過を表すプログレスバーとチューニング結果見やすくしました
この実行コマンドを、crontab
に書いておけば毎日指定時刻に前日を引き継ぎパフォーマンスチューニングが実行されるという寸法です
0 4 0 0 0 cd /path/to/chef-repo && gargor tune --no-progress-bar -s .gargor.state gargor.rb
冒頭に注意を書かせて頂きましたが、私はこの方法を個人的に運営しているサイトで試し始めたところでまだ結果は出ていません。サイトによってはメンテナンス画面への切り替えをしたり、ロードバランサ配下の一部のサーバのみで行う等の工夫が必要かと思います。なにか良いアイデアをお持ちの方は是非コメント欄などでご意見をいただければ幸いです。