DBサーバーの負荷状況によってアプリサーバーの処理を変更したくなった。アクセスが多い時や、激重処理が走っている時などは軽い処理メインで捌きたい。そこで2つの案が浮かぶ。
一つは、アプリサーバーからcronで数分おきにSSHでDBサーバーのloadaverageを取ってきてキャッシュさせておき、それを元に処理を分岐させる。ファイルやメモリキャッシュを使いたくなかったのと、アプリケーションからSSH接続の時に公開鍵だのなんだのが面倒だなあと思い反射的に不採用。アプリサーバーが既に複数あるのでそれも面倒気分に拍車がかかる。
もう一つは、DBサーバーのcronで数分おきにloadaverageを取得し自身のDBに値を格納する。そしてアプリサーバーから都度DBを見に行ってから処理させる。環境面での準備が不要だったのでテーブル作ってプログラムを書いて終わりだバンジャーイということで採用。
二つ目の方法で実装したが性能面で大差ないことを祈るのみ。キャッシュを使うとトラブった時に面倒なのが少しトラウマ。感覚的には一つ目の方法が最良だよなあああああああああああああああああ。
今のところDBサーバーはひとつだけどもレプリ構成にした時どうすりゃいいんだろう。バランサー自分で実装する感じになんのかな。備わってるのかな。