NewRelic и логи полезны, но иногда вам нужно больше. У NewRelic есть бесплатный инструмент, который поможет вам копать локально, а такие инструменты, как ruby-prof, предоставят вам информацию, но может быть трудно понять, что с этим делать.
Я наткнулся на страницу регистрации в клиентском приложении, которая была смехотворно медленной, без видимой причины. Журналы подтвердили, что это было медленно, и что медлительность не была связана с БД, но не помогла мне понять, в чем проблема.
https://github.com/brynary/rack-bug/
Проще в использовании, чем ruby-prof, и его можно быстро включить / выключить, когда вам нужно погрузиться во что-то. Я использую его все время, помогая людям настраивать свои приложения на Rails. Это помогло мне понять, какая часть была медленной, и с небольшой пробой и ошибкой я обнаружил, что это был выпадающий список часовых поясов на странице регистрации
На одной странице это было (медленная версия):
<% = time_zone_select: user,: time_zone, TZInfo :: Country.get ("US"). zone, {}%>
а другой был:
<% = f.time_zone_select: time_zone, ActiveSupport :: TimeZone.us_zones,: default => "Тихоокеанское время (США и Канада)"%>
Мои номера до / после:
orig template render 1392.91
fixed template render 165.56
fixed on REE instead of 1.8.7 100.70
Я не копал дальше, поскольку мне нужно было решить другие проблемы, но было бы возможно кэшировать часовые пояса и получить еще более быстрый ответ.