Настройка cron для агентов 1С-Битрикс: ускорение сайта

Почему агенты на хитах — узкое место? Представьте: интернет-магазин стройматериалов с каталогом на 200 000 товаров. В непиковые часы страницы открываются за секунду, но днём 10% запросов тормозят до 8 секунд. Причина — агенты Битрикса, работающие в режиме «на хитах». Каждый HTTP-запрос проверяет
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка cron для агентов 1С-Битрикс: ускорение сайта
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

Почему агенты на хитах — узкое место?

Представьте: интернет-магазин стройматериалов с каталогом на 200 000 товаров. В непиковые часы страницы открываются за секунду, но днём 10% запросов тормозят до 8 секунд. Причина — агенты Битрикса, работающие в режиме «на хитах». Каждый HTTP-запрос проверяет таблицу b_agent, и если подошло время выполнения — агент запускается синхронно, заставляя пользователя ждать. При пиковой нагрузке (100+ одновременных пользователей) это может вызвать эффект «каскадного торможения»: время ответа растёт экспоненциально, а серверная нагрузка увеличивается в 2-3 раза.

Мы помогаем перевести агенты 1С-Битрикс на cron — это перенос выполнения фоновых задач из HTTP-запросов в отдельный процесс по расписанию. Результат: стабильная скорость сайта независимо от трафика и экономия до 15 000 руб./мес. на серверных ресурсах за счёт снижения пиковых нагрузок. Свяжитесь с нами для диагностики текущего состояния — оценим ситуацию за один день.

Три проблемы режима «на хитах»

  1. Непредсказуемость. Агент с периодом 300 секунд запускается только когда придёт следующий посетитель. Ночью, при низком трафике, выполнение может отложиться на часы. Это особенно критично для задач синхронизации с 1С и отправки уведомлений.
  2. Замедление страниц. Тяжёлый агент (синхронизация с 1С, отправка писем) выполняется прямо во время запроса, увеличивая время ответа для конкретного пользователя. В результате — потеря конверсии до 7% на каждую секунду задержки.
  3. Ограничение по времени. max_execution_time (обычно 30–60 секунд) может прервать агент, оставив задачу незавершённой. Это приводит к дублированию данных и ошибкам.

Преимущества cron: таблица сравнения

Критерий На хитах Через cron
Время выполнения В момент запроса Фоном, по расписанию
Предсказуемость Зависит от трафика Всегда строго по интервалу
Влияние на пользователей Прямое (тормоза) Отсутствует
Управление нагрузкой Невозможно Настраивается интервал и блокировки
Максимальное время Ограничено PHP Не ограничено (можно set_time_limit(0))

Типичные ошибки при переводе на cron

Ошибка Последствия Решение
Неверный путь к PHP Агенты не запускаются Использовать which php
Отсутствие блокировок Параллельные запуски — дублирование данных Добавить flock в crontab
Игнорирование критичных агентов Сбой важных бизнес-процессов Проверить каждый агент отдельно

Как перевести агентов на cron правильно?

Шаг 1. Проверка текущего режима

В админке: «Настройки → Настройки модулей → Главный модуль». Параметр «Использование агентов» — если стоит «В режиме хитов», нужен перевод. Также можно выполнить SQL-запрос: SELECT NAME, LAST_EXEC, NEXT_EXEC FROM b_agent WHERE ACTIVE='Y' ORDER BY LAST_EXEC DESC LIMIT 20; — если NEXT_EXEC отстаёт от LAST_EXEC более чем на час, это косвенный признак проблемы.

Шаг 2. Настройка crontab

Подключитесь к серверу по SSH и откройте crontab:

crontab -e -u bitrix 

Добавьте строки:

# Агенты Битрикс — каждую минуту * * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1 # Очередь почтовых событий — каждые 5 минут */5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/event_exec.php > /dev/null 2>&1 

Проверьте путь к PHP через which php. Для защиты от параллельных процессов добавьте flock:

* * * * * /usr/bin/flock -n /tmp/bitrix_cron.lock /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1 

Шаг 3. Переключение режима в Битриксе

После настройки cron и проверки (запустите скрипт вручную: /usr/bin/php -f /path/to/cron_events.php) — переключите опцию на «Через cron» и сохраните. Очистите кеш платформы. Рекомендуется сначала перевести тестовую копию сайта.

Шаг 4. Проверка выполнения

Выполните SQL-запрос:

SELECT NAME, LAST_EXEC, NEXT_EXEC FROM b_agent WHERE ACTIVE='Y' ORDER BY LAST_EXEC DESC LIMIT 20; 

LAST_EXEC должен обновляться каждую минуту. Если нет — проверьте системный лог cron (/var/log/cron) и вывод ошибок PHP. Также настройте мониторинг — например, отправляйте алерт в Telegram если агент не выполнялся более 5 минут.

Почему cron экономит ресурсы сервера?

При работе на хитах каждый запрос нагружает сервер вызовом CAgent::CheckAgents(). На слабых конфигурациях (1-2 ядра) это может занимать до 200-300 мс на запрос, что при 1000 запросов в час даёт дополнительную нагрузку в 50-80 секунд процессорного времени в час. Cron убирает эту нагрузку полностью, а фоновый процесс выполняется 1-2 секунды в минуту.

Кейсы из нашей практики

Снижение времени ответа на 90%

Клиент — крупный онлайн-магазин стройматериалов. Жалобы на «случайные» тормоза до 5–10 секунд. Профайлер показал: в 10% запросов CAgent::CheckAgents() добавлял 3–8 секунд из-за агента переиндексации поиска и обработки очереди уведомлений.

После перевода всех агентов на cron:

  • CAgent::CheckAgents() исчез из профайлера.
  • 99-й перцентиль времени ответа снизился с 8,2 до 0,9 секунды.
  • Агенты переиндексации стали работать раз в минуту незаметно для пользователей.
  • Экономия серверных ресурсов составила около 12 000 руб./мес.

Ночная синхронизация с 1С

Клиент — интернет-магазин бытовой техники. Агент синхронизации остатков с периодом 3600 секунд выполнялся нерегулярно, ночью остатки не обновлялись до утра. Причина — режим «на хитах» и низкий ночной трафик.

Мы перевели агенты на cron с запуском каждую минуту. Агент синхронизации стал выполняться строго по расписанию. Дополнительно обнаружили, что агент иногда превышал max_execution_time — добавили set_time_limit(0) в начало скрипта. Теперь остатки обновляются каждые 60 минут круглосуточно.

Что входит в работу

  • Диагностика текущего режима агентов и их влияния на производительность.
  • Настройка crontab с блокировками от параллельных запусков.
  • Переключение режима в Битриксе и очистка кеша.
  • Тестирование каждого критичного агента (уведомления, выгрузки, индексация).
  • Настройка мониторинга выполнения с алертами при сбоях.
  • Документация по обслуживанию и восстановлению.
  • Рекомендации по дальнейшей оптимизации (кеширование, отложенные функции).

Сроки и как заказать

Базовая настройка занимает 4–8 часов. Если требуется комплексная диагностика и оптимизация медленных агентов — 1–3 рабочих дня. Стоимость рассчитывается индивидуально после аудита, но в среднем окупается за 2-3 месяца за счёт снижения нагрузки.

Получите консультацию: свяжитесь с нами, и мы предложим план работ под ваш проект. Оцените производительность вашего сайта — это бесплатно.