Тонны запросов об использовании файлов


Я пытаюсь отладить сайт с периодической медлительностью, и мне удалось отследить его до длинной серии запросов file_usage, которые, похоже, поступают из перестроения search_index.

SELECT base.fid AS fid, base.uid AS uid, base.filename AS filename, base.uri AS uri, base.filemime AS filemime, base.filesize AS filesize, base.status AS status, base.timestamp AS timestamp
FROM 
file_managed base
WHERE  (base.fid IN  ('50545'))

И

SELECT f.module AS module, f.type AS type, f.id AS id, f.count AS count
FROM 
file_usage f
WHERE  (fid = '22638') AND (count > '0')

Эти запросы, по-видимому, запускаются при случайной загрузке страницы и продолжаются до тех пор, пока они не будут уничтожены или время ожидания страницы не истечет.

Я подумал, что это может быть как-то связано с перестройкой индекса поиска, поэтому я добавил

$conf['search_cron_limit'] = '0';

К settings.php безрезультатно. На этом сайте очень много модулей, так что я действительно не знаю, с чего начать.

Author: Cthos, 2013-03-26

1 answers

Как оказалось, в system_cron в конечном итоге вызвал шторм запросов. Конкретный фрагмент оскорбительного кода был следующим:

$result = db_query('SELECT fid FROM {file_managed} WHERE status <> :permanent AND timestamp < :timestamp', array(
    ':permanent' => FILE_STATUS_PERMANENT,
    ':timestamp' => REQUEST_TIME - DRUPAL_MAXIMUM_TEMP_FILE_AGE,
  ));
  foreach ($result as $row) {
    if ($file = file_load($row->fid)) {

Как оказалось, было около 200 тысяч файлов, которые соответствовали этому первому запросу. Затем он будет перебирать их все и проверять, остались ли у них какие-либо ссылки. Поскольку он должен был выполнить эту проверку в мае, это приводило к сбоям в базе данных и вызывало приличное количество замедлений. Кроме того, он не нашел бы ничего, что можно было бы обрезать, так как все эти файлы все еще используются в настоящее время.

Решение в моем случае состояло в том, чтобы просто установить поле статуса равным 1 для всех записей-нарушителей, поскольку они не собирались меняться в ближайшее время (это изображения продуктов, которые не часто обновляются). Все последствия этого мне неизвестны, но это казалось разумным решением.

 1
Author: Cthos, 2013-03-26 03:16:12