По некоторым сайтам в Яндекс Вебмастере выдаются такие предупреждения:

Уведомления

Страницы сайта speed24.ru в среднем слишком долго отвечают роботу

При обращении к серверу среднее время ответа превышает 3 секунды. Долгая загрузка страниц затрудняет работу с сайтом speed24.ru.

Проверьте ответ сервера и при необходимости обратитесь к хостинг-провайдеру.

Перейдите в раздел диагностики, чтобы узнать обо всех известных Яндексу проблемах сайта.

Рассмотрим популярные причины появления такого уведомления в панели Вебмастера на примере этого сайта speed24.ru.

Высокая нагрузка на сайт

Высокую нагрузку, с которой сервер не может справиться в течение трех и более секунд, могут создавать:

  • плотный трафик пользователей на сайт
  • перегруженная запросами база данных
  • запросы по сети других ресурсов

Плотный трафик

Возьмем для примера самый дешевый шаред-хостинг. Он может выдержать 200 посетителей в день, и даже больше, если нагрузка распределена более-менее равномерно. Трафик в 10 тыс посетителей в сутки для шаред-хостинга скорее всего станет неподъемным. Поэтому нужно сравнить даты предупреждений с пиками посещаемости. Это даст ответ на вопрос, "а не пора ли переезжать"? Большие объемы по обновлению каталога также могут быть причиной непомерной нагрузки.

сравнение шаред хостинка VDS и выделенного сервера

База данных

Однако сайт speed24.ru не имеет такой нагруженный трафик, чтобы он был причиной конкуренции за ресурсы сервера. Может быть виновата медленная база данных? Действительно, сложные SQL-запросы, которые выбирают нужные данные, могут быть причиной медленной генерации страницы. Некоторые CMS даже выводят сообщения, похожие на это:

Время генерации страницы: 2.6737 секунд
Запросы к базе: 185

InstantCMS

Если такого модуля в вашей CMS нет, можно установить специальный профилировщик, который собирет всю необходимую информацию. Но сайт speed24.ru не использует базу данных, будем искать причину дальше.

Запросы других сетевых ресурсов

Вот с какими проблемами медленной генерации страницы мы сталкивались:

  • цены на товары хранились в долларах, и пересчитывались по курсу, который интернет-магазин получал с другого ресурса в режиме он-лайн, с каждым открытием страницы сайт лазил в интернет
  • часть содержимого страницы бралась с другой площадки, и также в режиме он-лайн, без какого-либо кеширования
  • каждый показ контента запускал задачу проверки очереди email-сообщений и их отправку

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

  • перекладывать выполнение заданий на отдельный процесс, запускаемый по расписанию
  • запуск скриптов параллельно в фоновом режиме
  • хранение данных стороннего ресурса в кеше и периодическое обновление в фоне

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

Вариант организации работы сайта

Медленный хостинг

Допустим, что сайт хорошо оптимизирован для нагрузки. Что еще может привести к возникновению предупреждения "3 секунды"?

Если используется шаред-хостинг, или VDS с виртуализацией OpenVZ, то могут быть виноваты "соседи" по хостингу, которые в это время нагружают сервер, например плановым заданием обновления каталога на 10 тыс позиций, с пережатием картинок и генерацией XML-файлов выгрузок. К сожалению, такой случай довольно трудно определить, находясь "внутри" контейнера OpenVZ, или имея очень ограниченные права на шаред-хостинге. А поиск причины похож на поиск ответа "как узнать, что ты находишься в матрице".

Вот как выглядит смена хостера и технологии виртуализации с OpenVZ на KVM:

OpenVZ vs KVM

Вообще, сообщения "страницы слишком долго отвечают роботу" мы видели на сайтах, которые оптимизированы по скорости, а также на одностраничнике, который полностью сделан на HTML. Почему же такое случилось? Мы подумали и решили, что если такие случаи единичны, то причина кроется в плохом канале связи (возможных сетевых проблемах у хостера), что исправить нельзя, да и нет особого смысла. А если предупреждения сыпятся часто, а видимой причины нет, нужно мониторить нагрузку.

Кстати, с помощью этих инструментов можно промониторить сайт и найти страницы, которые долго загружаются.