ActiveRecordのrequireは遅くてもいい

以前、activerecordのrequireは遅いという記事を書いた。
activerecordのrequireは遅い
activerecordのrequireは遅い(2)

このRequire自体はRailsではプロセスを起動する初回しか行われない。プロセスを起動した後は、Railsは起動しっぱなしになる。だから、遅くても構わない、という雰囲気であるのがようやく見えてきた。

よって、フレームワークなしにActiveRecordをCGIに使おうとする場合には工夫が必要で、その工夫ができない場合は素直にRailsを使ったほうがいいんだね、ということが分かったのが先月。CGIなんてWebからプロセス起動しているだけだろ、簡単だろーっと思っていたら叩き落とされた。

正直、意味分からないエントリだった。このキーワードで検索で引っかかってくる方々には申し訳ない。

で、実際にチューニングをしていくと、DBとViewのどっちかで遅くなってくる。自分みたいなDB初心者の場合はDBで遅くなることが多いと思う。少し油断するとテキストデータのレスポンスに1sとかありえない待ち時間になる(だとしてもRailsを使う前は毎回ActiveRecordのrequireに1s以上かかっていたので…)。

DBで遅くなっているかいないかについては、

# less log/development.log

を見れば大体わかる。

で、DBで遅くなっている原因が何度もアクセスしているからであれば、DBへのアクセスを:include =>して1つにまとめる。何度も見られるページかつ更新が必要ないページで、DBの最初の1発が遅いのであれば、memcachedみたいなキャッシュに放り込む。

ということをして、(DB初心者でも、やっと)レスポンス200msを切ることができるようになった。

Railsにはデバッグモードのdevelopmentと、公開モードのproductionがあり、productionのレスポンスのスピードはdevelopmentに比べて速い。productionで最終的にチューニングをすることになる。

カテゴリー: チラシの裏 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください