多くの周辺オブジェクトを含む大きなアクティブなレコードクエリを実行しています。アクティブレコードの事前ロードによる影響のパフォーマンス低下の原因
".includes"(プリロード)を追加すると、N + 1個の すべてを押しつぶすことで、スピードアップします。
ページが高速でレンダリングし、ログにこれを吐く:ページが実際に にブラウザ(またはカールを下されるまで
Completed 200 OK in 504ms (Views: 104.2ms | ActiveRecord: 86.0ms)
はしかし、それは、* 90秒*です。私たちは両方でテストしました)。
ルビプロセスでは、CPUが100%に固定されています。
「.includes」(プリロード)を削除すると、ページ レンダリングとブラウザ配信の間に何も分からない通常のくそった のパフォーマンスに戻ります。
WTFは、あとで効果が出るプリロードの原因ですか?
1人の同僚がガベージコレクションの問題を仮定しています。私はその理論をどうやってテストするだろうか?
レール3.2.12
ルビー1.9.3(P286及びP327が試験)