Как я могу сказать, что занимает мой запрос так долго? - PullRequest
1 голос
/ 02 июня 2011

Итак, вот последняя строка моего запроса:

Completed in 9209ms (View: 358, DB: 1582)

Так что мне нужно выяснить, что задерживает запрос. Этот запрос может занять более минуты, так что мне действительно нужно выяснить это. Если DB и View занимают 1,9 секунды, то это означает, что в журнале не хватает 7,2 секунды. Как я могу дополнительно проанализировать другие части кода? Было бы замечательно знать, если бы, скажем, был один обратный вызов, который в значительной степени ответственен за задержку.

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Вы материализуете много записей из базы данных?Время запроса может быть небольшим, но если, скажем, я выбрал 10 000 записей из базы данных, используя очень простой и быстрый запрос, я все равно ожидал бы, что время загрузки моей страницы будет высоким, поскольку это потребует значительного количества времени на гидратацию.большой набор записей.

Я бы предложил запустить несколько тестов профилирования (rake test:profile).Это должно дать вам представление о том, где большую часть времени проводится.Вы, вероятно, обнаружите, что это всего один или два вызова метода, которые вызываются с чрезмерной частотой.

0 голосов
/ 02 июня 2011

Обычно код, которого нет в БД или в представлении, находится в контроллере (или это может быть логическая часть модели). Самые большие виновники, с которыми у меня были проблемы, - это циклы внутри циклов или безвозмездное использование :include => {...stuff...}

...