Извършване на голяма заявка за активен запис с много периферни обекти.
Добавянето на ".includes" (предварително зареждане) го ускорява драстично чрез смачкване на всички N+1.
След това страницата се изобразява бързо и изхвърля това в регистрационните файлове:
Completed 200 OK in 504ms (Views: 104.2ms | ActiveRecord: 86.0ms)
След това обаче минават * 90 СЕКУНДИ * докато страницата действително бъде изпратена до браузъра (или curl; тествахме и с двата).
През което време ruby процесът е фиксирал процесора на 100%.
Ако премахнем ".includes" (предварително зареждане), той се връща към нормална скапана производителност без минута и половина пропаст на нищото между изобразяването на страницата и доставката на браузъра.
WTF дали предварителното зареждане причинява този последващ ефект!?
Един колега изказа хипотеза за проблем със събирането на боклука; как мога да тествам тази теория?
Релси 3.2.12
Ruby 1.9.3 (тествани p286 и p327)