Задачи по расписанию на сервере: что ломается молча

На сайте есть вещи, которые происходят сами: ночью обновляются остатки товаров из складской программы, утром уходит рассылка, раз в сутки создаётся резервная копия, раз в неделю пересобирается карта сайта, каждые полчаса отправляются накопившиеся уведомления.
Всё это делают задачи по расписанию — программы, которые сервер запускает в назначенное время без участия человека. Настроили их один раз при запуске сайта, и с тех пор о них никто не вспоминает.
Проблема в том, что ломаются они молча. Сайт продолжает открываться, заявки продолжают приходить, ошибок никто не видит. А в это время остатки не обновляются вторую неделю, резервных копий нет с весны, а рассылка не уходила ни разу за квартал.
Разберём, какие задачи обычно работают на сайте компании, почему они выходят из строя незаметно и как настроить контроль.
Какие задачи обычно есть на сайте
Список зависит от сайта, но типовой набор такой.
Обмен с учётной системой. Выгрузка товаров, остатков и цен из 1С, приём заказов обратно. Обычно ночью или несколько раз в день.
Резервное копирование. Файлы и база данных, ежедневно.
Отправка накопленных писем. Уведомления, подтверждения, рассылки.
Обновление карты сайта. Пересборка списка адресов для поисковых систем.
Очистка временных файлов. Кэш, старые сессии, журналы, миниатюры изображений.
Пересчёт данных. Скидки, акции по расписанию, рейтинги, счётчики просмотров.
Импорт от поставщиков. Прайсы по расписанию.
Выгрузка на внешние площадки. Товарные фиды для маркетплейсов и рекламы.
Проверка и уведомления. Напоминания клиентам о записи, письма о брошенной корзине.
Обновление курсов и справочников.
Часть этих задач влияет на деньги напрямую: если остатки не обновились, клиент заказывает то, чего нет. Часть влияет на репутацию: напоминание о записи не ушло, человек не пришёл. Часть — на безопасность: копий нет.
Почему они ломаются молча
Причина в самой природе таких задач: у них нет пользователя, который заметит ошибку.
Никто не смотрит на результат. Успешное выполнение выглядит как отсутствие событий. Неуспешное — тоже.
Сообщения об ошибках уходят в никуда. По умолчанию вывод задачи отправляется на служебный адрес почты, которого не существует или который никто не читает.
Задача завершается «успешно», не сделав работу. Например, скрипт обмена запустился, не нашёл файл с данными и корректно завершился. С точки зрения сервера всё в порядке.
Ошибка проявляется не сразу. Копии не делаются полгода, и выясняется это в день, когда копия понадобилась.
Изменения в окружении. Обновили версию серверного программного обеспечения — путь к нужной программе изменился, задача перестала запускаться.
Переезд на другой хостинг. Файлы и база перенесены, а расписание задач — нет. Классическая потеря при переезде.
Изменение доступов. Сменили пароль к складской системе, к почтовому серверу или к внешнему сервису — задача перестала подключаться.
Переполнение диска. Задача не может записать результат. Молча.
Наложение запусков. Задача выполняется дольше, чем интервал между запусками. Копии накапливаются, нагружают сервер, потом всё падает.
Признаки, что что-то сломалось
Хотя ломается молча, косвенные признаки есть.
Клиенты заказывают то, чего нет на складе. Значит, остатки не обновляются.
Цены на сайте не совпадают с ценами в учётной системе.
Новые товары не появляются на сайте, хотя в складской программе они есть.
Не приходят напоминания клиентам.
Резервные копии старые — проверьте дату последней.
Свободное место на диске стремительно кончается. Часто это накопившиеся журналы или неудалённые временные файлы.
Карта сайта не обновляется — новые страницы в ней не появляются.
Товары исчезли с маркетплейса или из рекламных объявлений — не уходит выгрузка.
Сервер периодически тормозит в одно и то же время — задача выполняется слишком долго или запускается в несколько копий.
Как настроить контроль
Главный принцип: задача должна сообщать о себе, а не молчать.
Уведомление об ошибке. Настройте отправку сообщения на рабочий адрес почты или в мессенджер при неуспешном завершении. Это минимум.
Уведомление об успехе для критичных задач. Для обмена с учётной системой и резервного копирования полезно получать короткое сообщение с итогом: сколько товаров обновлено, какой объём копии.
Контроль по факту, а не по запуску. Проверять нужно не то, что задача запустилась, а то, что результат появился. Для копирования — что файл создан и имеет разумный размер. Для обмена — что дата последнего обновления товаров свежая.
Внешний контроль. Существует приём, когда задача в конце работы обращается к внешнему сервису контроля. Если обращение не поступило в ожидаемое время, сервис присылает предупреждение. Так вы узнаете и о том, что задача вообще не запустилась.
Журнал выполнения. Каждая задача пишет в свой журнал: когда запустилась, что сделала, сколько заняла, чем закончилась. Журналы должны храниться ограниченное время и удаляться автоматически.
Защита от наложения. Задача при запуске проверяет, не выполняется ли уже её копия, и если да — не запускается.
Разумное расписание. Тяжёлые задачи не должны выполняться в часы наибольшей посещаемости. Обмен с учётной системой и резервное копирование — ночью, но не в одно и то же время.
Проверка восстановления. Резервная копия, которую ни разу не разворачивали, не является резервной копией. Раз в квартал нужно проверять, что из неё можно поднять сайт.
Что проверить прямо сейчас
Короткая процедура, которая занимает полчаса и часто приносит неприятные открытия.
Составьте список задач. Попросите подрядчика или посмотрите в панели хостинга раздел с расписанием. Выпишите: что делает, когда запускается, куда пишет результат.
Проверьте дату последней резервной копии. Откройте хранилище и посмотрите. Если копии старше суток — это уже проблема.
Проверьте, разворачивается ли копия. Хотя бы один раз.
Проверьте дату последнего обновления остатков. Сравните с учётной системой.
Проверьте, куда уходят сообщения об ошибках. Существует ли этот адрес и читает ли его кто-нибудь.
Проверьте свободное место на диске.
Проверьте, обновляется ли карта сайта. Откройте её и посмотрите, есть ли там свежие страницы.
Проверьте выгрузки на внешние площадки. Дата последнего файла.
Если сайт недавно переезжал на другой хостинг, проверьте всё это в первую очередь: расписание при переездах теряется чаще всего.
Как это связано с продвижением «3 в 1»
Задачи по расписанию кажутся сугубо внутренней историей, но их отказ бьёт по всем трём каналам обращений.
Поиск. Карта сайта, которая перестала обновляться, означает, что новые страницы дольше попадают в индекс. Товары, которые не обновились, показываются в поиске с неверными ценами и наличием — человек приходит, видит несоответствие и уходит. Отдельно важно для генеративных ответов: они опираются на актуальные сведения, и сайт с устаревшими данными теряет доверие как источник. Отказ выгрузки товарного фида означает исчезновение из товарной рекламы, а это прямая потеря обращений.
Яндекс.Справочник. Часть компаний настраивает автоматическое обновление сведений и публикаций. Но даже без этого связь есть: человек приходит из карточки на сайт, видит устаревшие цены или отсутствующие товары и уходит. Карточка отработала, а обращения нет.
2ГИС. То же самое.
И общий для всех трёх пункт: резервное копирование. Если сайт упал и восстановить его не из чего, останавливаются сразу все каналы. Карточки на картах продолжают показываться, люди переходят на сайт и получают ошибку. Восстановление известности после длительной недоступности занимает недели.
Резервное копирование: подробнее
Из всех задач по расписанию эта самая важная, поэтому разберём её отдельно.
Что должно копироваться. И файлы сайта, и база данных. Копия только базы бесполезна без файлов, копия только файлов — без базы. Отдельно стоит копировать загруженные пользователями материалы: изображения, документы.
Как часто. Ежедневно как минимум. Для интернет-магазина с активными заказами — чаще, потому что за сутки накапливается много данных.
Какая глубина хранения. Одной копии за прошлые сутки недостаточно: многие проблемы обнаруживаются через несколько дней. Разумная схема — ежедневные копии за две недели, еженедельные за три месяца, ежемесячные за год.
Где хранить. Не на том же сервере, где работает сайт. Если выйдет из строя диск или площадка окажется недоступна, копии пропадут вместе с сайтом. Нужно отдельное хранилище, желательно у другого провайдера.
Проверка восстановления. Копия, из которой ни разу не разворачивали сайт, — это не копия, а файл неизвестного содержания. Раз в квартал нужно разворачивать её на тестовой площадке и проверять работоспособность.
Контроль размера. Резкое уменьшение размера копии — признак того, что копируется не всё. Резкий рост — признак того, что накопился мусор.
Уведомление о результате. Короткое сообщение с датой, размером и итогом.
Понятный порядок восстановления. Записанная инструкция: кто, что и в каком порядке делает, если сайт нужно поднять из копии. В момент аварии разбираться некогда.
Как это выглядит при разных схемах размещения
Устройство задач по расписанию зависит от того, где живёт сайт.
Обычный виртуальный хостинг. Расписание настраивается в панели управления хостингом. Ограничения: минимальный интервал запуска, ограничение времени выполнения, ограничение потребляемых ресурсов. Тяжёлый обмен с учётной системой на таком хостинге часто обрывается по времени, не завершив работу, — и это тоже происходит молча.
Выделенный или виртуальный сервер. Полный контроль над расписанием, нет ограничений по времени выполнения, можно настроить журналы и уведомления как угодно. Требует администрирования.
Облачная площадка. Промежуточный вариант с гибкой настройкой и обычно с встроенными средствами контроля.
Практический вывод: если у вас большой каталог и регулярный обмен с учётной системой, обычный виртуальный хостинг может быть узким местом. Обрывы обмена по превышению времени — типичная причина «половинчатых» обновлений каталога.
Кто должен за этим следить
Практика показывает три рабочих варианта.
Подрядчик по сопровождению. Самый надёжный: в договоре прописан контроль задач по расписанию и резервного копирования, есть ответственный и есть отчётность.
Свой системный администратор. Подходит компаниям, где он есть и загружен не полностью.
Ответственный сотрудник с чек-листом. Минимальный вариант: раз в месяц человек проходит по списку и проверяет даты. Не заменяет технический контроль, но лучше, чем ничего.
Чего не работает: «мы попросим программиста посмотреть, если что-то сломается». К моменту, когда это заметят, уже потеряны данные или деньги.
Что делать по шагам
- Получите список всех задач по расписанию с описанием, что каждая делает.
- Проверьте дату последней резервной копии и её размер.
- Разверните копию на тестовой площадке и убедитесь, что она рабочая.
- Проверьте свежесть данных обмена с учётной системой.
- Проверьте дату последней выгрузки на внешние площадки.
- Проверьте, обновляется ли карта сайта.
- Настройте уведомления об ошибках на рабочий адрес или в мессенджер.
- Настройте уведомления об итогах для критичных задач.
- Добавьте защиту от одновременного запуска нескольких копий.
- Разнесите тяжёлые задачи по времени и уберите их из часов пик.
- Настройте ведение и автоматическую очистку журналов.
- Подключите внешний контроль выполнения для самых важных задач.
- Настройте контроль свободного места на диске.
- Внесите ежеквартальную проверку восстановления копии в план работ.
- Назначьте ответственного за контроль и определите порядок действий при сбое.
Итог
Задачи по расписанию — та часть сайта, которая работает без свидетелей. Именно поэтому их отказ обнаруживается позже всего и обходится дороже всего: неверные остатки, потерянные заказы, отсутствующие резервные копии, исчезновение из товарной рекламы.
Лечится это не сложными системами, а простым принципом: каждая важная задача должна сообщать о своём результате, а результат должен проверяться по факту, а не по факту запуска. Плюс регулярная проверка того, что резервная копия действительно разворачивается.
Полчаса на составление списка задач и проверку дат — вложение, которое окупается первым же предотвращённым сбоем.
Если вы не знаете, какие задачи выполняются на вашем сервере и работают ли они до сих пор, специалисты компании «Сайты Профессионально» проведут проверку, настроят уведомления и контроль, наладят резервное копирование с проверкой восстановления. Обращайтесь за бесплатной консультацией — посмотрим, что у вас происходит по расписанию и что уже давно не происходит.
Хотите получить бесплатную диагностику сайта?
Получите бесплатную экспресс-диагностику за 24 часа. Проверим ошибки, сбои, скорость, безопасность и скрытые ошибки — пришлём отчёт с рекомендациями.
- Скорость загрузки и мобильная версия
- Уязвимости, вирусы, взломы
- Битые ссылки, дубли, SEO-ошибки
- Статус домена, SSL, хостинга
Популярные решения наших клиентов:

До 10 часов работ в мес.
Ежедневная диагностика
Продление домена
Продление хостинга/сервера

До 40 часов работ в мес.

До 100 часов работ в мес.
