0

Rails 3.0.12を使用していますが、開発環境でconfig.cache_classes = falseを使用すると、ActiveRecordクエリが非常に遅くなります。3つのクエリを実行するコントローラアクションは、ローカルで200ミリ秒以上かかります。

[INFO: 06/01 12:34:16 #10831] Started GET "/api/v1/subscription.json" for 127.0.0.1 at 2012-06-01 12:34:16 -0400
[INFO: 06/01 12:34:16 #10831] Processing by Api::V1::SubscriptionsController#show as JSON
[DEBUG: 06/01 12:34:16 #10831] User Load (0.7ms)  SELECT "users".* FROM "users" WHERE "users"."apikey" = 'xyz' LIMIT 1
[DEBUG: 06/01 12:34:16 #10831] Site Load (0.6ms)  SELECT "sites".* FROM "sites" WHERE "sites"."id" = 1 LIMIT 1
[DEBUG: 06/01 12:34:16 #10831] Subscription Load (1.9ms)  SELECT "subscriptions".* FROM "subscriptions" WHERE ("subscriptions".site_id = 1) LIMIT 1
[INFO: 06/01 12:34:16 #10831] Completed 200 OK in 236ms (Views: 1.5ms | ActiveRecord: 3.3ms)

実際のARクエリは非常に高速ですが、合計時間は236ミリ秒であることに注意してください。ARクエリを実行しない別のコントローラーアクションには1ミリ秒かかります。

開発環境でconfig.cache_classes=falseを設定すると、ARクエリを実行するアクションは予想どおり4ミリ秒で実行されます。

ARクラスは本当にすべてのリクエストでリロードされていますか?cache_classesはappディレクトリ内のものだけを処理すると思いました。これをどのように改善できるかについて何か考えはありますか?明らかにcache_classes=falseで実行したいので、変更のたびにrailsを再起動する必要はありませんが、APIの実行が遅すぎて、現在意味のあるテストを実行できません。

4

0 に答える 0