さくらのVPSでのredmineの高負荷問題はgitリポジトリの同期

さくらのVPSでredmineが不安定だった問題、いろいろあったか安定の兆し。

問題を整理するとさくらのVPSに接続できなくなるほどLoad Avarageが高くなるという問題があった。fastcgiで動かしていてrubyのプロセスが残っていたのでRedmineが悪さをしているのでは?という疑いを持っていた。しかし、Redmineの実行をpassenge(mod_rais)に変えても状況が改善されなかったため別の要因を探しだした。

そして負荷が高くなった時間に規則性があり、その時に動かしていた以下のコマンドを止めてみたところ問題が再現しなくなった。それは以下のコマンドである。

ruby script/runner "Repository.fetch_changesets" -e production

それまで一週間と安定して実行できていなかったのに、一ヶ月はLoad Avarageが1以下なのでこれが原因だったと思ってもよいだろう。

ただ必要があって実行していたコマンドなので全てが解決したわけではない。実行していたコマンドはredmineのプロジェクトにgitリポジトリのコミットを同期するものである。

何も設定していなければgitにコミットをpushしたところでそれをredmineが知る術はない。通常はredmineを表示するとおもむろにredmineはgitリポジトリの内容を参照しにいく。この処理が重いのでredmineの表示するときにリポジトリを見に行かせるのをやめて、先のコマンドで定期的に取得していたのである。

問題が先のコマンドにあるのか、gitのリポジトリに何か問題があるのか、これから検証する必要があるが原因の箇所に近づいただけでも前進である。