Nwht0xn1

ActiveRecordでpreloadを忘れていたせいでamakanのパフォーマンスが急激に悪化してしまったCreated on 2016-07-13 by r7kamura

たまたまNewRelicを見たところ、https://amakan.net の著者ページ (例: 著者「得能正太郎」の本 - amakan) のせいでパフォーマンスが悪いことに気付く。

image

結果的に、ある著者の著書一覧の著者達をpreloadしていないせいでN+1クエリが発生しているという、単純なミスだった。

diff --git a/app/controllers/authors_controller.rb b/app/controllers/authors_controller.rb
index a7e115c..33ecd2a 100644
--- a/app/controllers/authors_controller.rb
+++ b/app/controllers/authors_controller.rb
@@ -1,6 +1,6 @@
 class AuthorsController < ApplicationController
   def show
     @author = ::Author.find(params[:author_id])
-    @products = @author.products.page(params[:page])
+    @products = @author.products.page(params[:page]).preload(:authors)
   end
 end