データベースの応答が劇的に遅くなるときがあって、原因と解決方法を探そうとしていた。現象が起きているのはHerokuのデモ用の環境だったのだが、本番環境では起きていないのがまだよかったところ…。とりあえず、heroku pg:diagnoseと打つと、健康状態がわかるらしい。
参考URL:https://blog.heroku.com/archives/2014/8/12/pg-diagnose
heroku pg:diagnose --app app-name
こうしたところ、REDが出た。
RED: Hit Rate Name Ratio ---------------------- ------------------ overall table hit rate 0.9375946835977065 GREEN: Connection Count GREEN: Long Queries GREEN: Idle in Transaction GREEN: Indexes GREEN: Bloat GREEN: Blocking Queries SKIPPED: Load Error Load check not supported on this plan
このHit Rateが0.99以上であることが正常らしい。これでいえば、93%はメモリにキャッシュされているが、7%はキャッシュされていない。これがとても遅くなる原因なので、次に高いプランにするか、速いプランに変えようって書いてあった。
運用コストを削るためにhobby:basicで運用していたのだが、もし本番環境でこれが頻発するようだったらstandard0にしないとまずそうだ。というか本番環境としての運用はstandard0以上がいいって書いてあるんだけれど。しかし、本番環境以外のデモ環境などについてもstandard0にするとなると、運用コストが跳ね上がる。なにかいい方法を考えなければならない。