отладка контроллера рельсов, делающего слишком много запросов - PullRequest
1 голос
/ 30 апреля 2009

У меня есть приложение rails, которому около 3 лет, и у меня проблема с тем, что мои страницы делают слишком много запросов. Каждая загружаемая страница имеет несколько строк, которые выглядят так:

ReqTdsLink Columns (1.0ms)   SHOW FIELDS FROM `req_tds_links`

какой вызов метода вызовет этот вывод в журнале? Я не могу найти какие-либо фильтры до этого или что-то еще в контроллере приложения, которое может быть причиной этого, но мне еще предстоит проверить все представления (астрономические по количеству) я начинаю вручную сканировать каждый файл на предмет чего-то, что может вызвать это.

спасибо,

-C

Ответы [ 4 ]

2 голосов
/ 01 мая 2009

Вы работаете в режиме разработки или производства?

SHOW FIELDS FROM foo выполняется вашей моделью, как вы заметили, поэтому она знает, какие методы доступа генерировать.

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

1 голос
/ 02 мая 2009

Если у вас снова возникла такая проблема, и вам нужно отследить, как вызывается запрос, я бы предложил плагин Query Trace: http://github.com/ntalbott/query_trace/tree/master. Он добавляет трассировку стека в журнал для каждого запроса SQL. Очень удобно.

1 голос
/ 30 апреля 2009

Это вызывается ActiveRecord, считывающим атрибуты модели из вашей базы данных. Это не произойдет несколько раз в производственной среде, но в режиме разработки Rails каждый раз запрашивает у таблицы информацию о любых возможных изменениях.

0 голосов
/ 01 мая 2009

Эта строка на самом деле происходит от вызова модели, у меня был массив в контроллере приложения, который выглядел как [Model1, Model2, Model3], и я изменил его на внешний вид ['Model1', 'Model2', 'Model3'] и это исправило все дополнительные звонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...