Оптимізація швидкості обміну 1С та 1С-Бітрікс

Обмін з 50 000 товарами триває 4 години та блокує роботу всього сайту в робочий час. Це типовий симптом, коли каталог виріс у 10 разів, а налаштування залишилися колишніми. Кожна година простою коштує тисячі гривень. Ми щодня стикаємося з такими проектами: клієнти скаржаться на гальма, причина — у з
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Оптимізація швидкості обміну 1С та 1С-Бітрікс
Середній
~1-2 тижні

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1460
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    764
  • Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1165

Обмін з 50 000 товарами триває 4 години та блокує роботу всього сайту в робочий час. Це типовий симптом, коли каталог виріс у 10 разів, а налаштування залишилися колишніми. Кожна година простою коштує тисячі гривень. Ми щодня стикаємося з такими проектами: клієнти скаржаться на гальма, причина — у застарілому механізмі обміну. Оптимізація швидкості — це комплексний аудит та перепроектування як на стороні 1С, так і на стороні 1С-Бітрікс. Наш досвід — 10+ років з Бітрікс, понад 50 проектів з інтеграції. У цій статті розберемо ключові методи: пакетне завантаження, відкладену індексацію та кешування. Ви дізнаєтеся, як скоротити час обміну з кількох годин до 20–30 хвилин. Готові оцінити ваш проект? Зв'яжіться з нами для консультації — ми підготуємо пропозицію за один день. Вартість базової оптимізації — від 5 000 грн, а економія від зменшення простоїв може сягати 30 000 грн на місяць.

Як прискорити обмін 1С та Бітрікс без програмування?

Перш ніж братися за складні налаштування, переконайтеся, що використано базові методи. Ввімкніть ZIP-стиснення та розбийте вивантаження на пакети. Ці прості дії дають прискорення в 3–5 разів без жодного рядка коду. Далі — профілювання.

Профілювання обміну 1С

Перш ніж щось оптимізувати — виміряти. Додати часові мітки в лог обміну:

Приклад коду для профілювання
// В обробнику OnIBlockElementImport $timings[] = [ 'step' => 'element_import', 'element' => $elementXmlId, 'time' => microtime(true) - $startTime, ]; 

Після обміну — проаналізувати: де проходить 80% часу. Варіанти:

  • Розбір XML — файли занадто великі, не розбиті на частини
  • Запис у БД — індекси, тригери, неоптимальні INSERT
  • Перерахунок цін — якщо включено автоперерахунок цін за правилами
  • Оновлення пошуку — переіндексація пошукового індексу при кожній зміні

Розбір XML як вузьке місце

Розбити вивантаження на пакети. У налаштуваннях 1С встановити «Кількість елементів у файлі» = 1000–2000. Кожен файл обробляється окремим HTTP-запитом. Бітрікс обробляє файл за 30–60 секунд замість зависання на 2+ години. Пакетна обробка в 10 разів швидша за поточкову.

Ввімкнути ZIP-стиснення. Файл з 2000 товарів без стиснення — 8–15 МБ, зі стисненням — 1–3 МБ. Для каналу між 1С та хостингом це суттєво, особливо при повільному з'єднанні. У налаштуваннях публікації 1С (протокол CommerceML): Использовать сжатие данных: Да, Порог сжатия: 1024 байт.

Оптимізація запису в базу даних

Стандартний імпорт Бітрікс викликає CIBlockElement::Add/Update для кожного елемента — це повний цикл з перевірками, обробниками подій та інвалідацією кешу. Для 50 000 елементів — 50 000 окремих транзакцій.

Вимкнути зайві події на час імпорту:

// Перед імпортом define('BX_BUFFER_MESS', true); // не надсилати поштові сповіщення $GLOBALS['STOP_STATISTICS'] = true; // не оновлювати статистику define('NO_AGENT_STATISTIC', true); 

Відкладена переіндексація. Пошук переіндексується після кожної зміни елемента. Для пакетного імпорту — вимкнути автоіндексацію та запустити переіндексацію окремим агентом після завершення обміну:

// Тимчасово вимкнути індексацію \Bitrix\Main\Config\Option::set('search', 'indexer_auto_mode', 'N'); // Після обміну запустити переіндексацію CSearch::ReIndexAll(true, CATALOG_IBLOCK_ID); 

Батчова інвалідація кешу. Замість BXClearCache при кожному оновленні елемента — зібрати змінені елементи в масив та інвалідувати кеш батчем у кінці обміну.

Оптимізація запитів до БД при імпорті

При оновленні елемента Бітрікс робить SELECT для перевірки існування, потім UPDATE або INSERT. При пакетному імпорті можна попередньо завантажити всі XML_ID у пам'ять і не робити SELECT на кожен елемент:

// Одним запитом отримати всі існуючі елементи $existing = []; $res = CIBlockElement::GetList( [], ['IBLOCK_ID' => CATALOG_IBLOCK_ID], false, false, ['ID', 'XML_ID'] ); while ($el = $res->Fetch()) { $existing[$el['XML_ID']] = $el['ID']; } // Тепер при імпорті: isset($existing[$xmlId]) замість SELECT 

Розділення обміну за типом даних

Повний обмін (каталог + ціни + залишки) в одному сеансі — надмірно. Розділити на незалежні потоки:

Потік Вміст Періодичність Навантаження
Повний каталог Описи, властивості, зображення 1 раз/ніч Висока, вночі
Ціни Тільки offers*.xml з цінами Щогодини Низька
Залишки Тільки offers*.xml із залишками Кожні 15 хв Мінімальна
Замовлення orders.xml Кожні 15–30 хв Мінімальна

У 1С можна налаштувати кілька незалежних регламентних завдань для різних типів вивантаження.

Кешування на стороні Бітрікс

Перевірити налаштування кешу модуля каталогу: Налаштування → Налаштування продуктів → Продуктивність:

  • Кеш елементів каталогу: ввімкнути, TTL 3600 секунд
  • Кеш властивостей: ввімкнути
  • Кеш торгових пропозицій: ввімкнути для магазинів з варіантами

При обміні кеш інвалідується автоматично для змінених елементів. Якщо інвалідація займає багато часу — перевірити розмір кешу на диску (/bitrix/cache/iblock/), при необхідності збільшити memory_limit для обробки.

Кейс: скорочення часу обміну з 4 годин до 25 хвилин

Один із наших клієнтів — інтернет-магазин запчастин, 65 000 позицій. Обмін запускався раз на добу і займав 4+ години, блокуючи перерахунок цін на весь цей період. З нашої практики.

Знайдені проблеми:

  1. Весь каталог в одному XML-файлі (240 МБ)
  2. Переіндексація пошуку при кожному елементі
  3. Перерахунок цін за 12 правилами на кожну зміну ціни
  4. BXClearCache для всього інфоблоку на кожні 100 елементів

Після оптимізації:

  • Розбивка на файли по 2000 елементів
  • Відкладена переіндексація в окремому агенті
  • Перерахунок цін — тільки після завершення імпорту, не в процесі
  • Батчова інвалідація кешу в кінці сеансу

Результат: повний обмін — 25 хвилин. Обмін тільки залишками та цінами (щогодини) — 3–4 хвилини. Економія склала близько 30 000 гривень на місяць за рахунок зменшення простоїв сайту.

Що входить у роботу з оптимізації?

При замовленні послуги «під ключ» ми:

  • Проводимо профілювання та аудит поточного обміну
  • Розбиваємо вивантаження на пакети, налаштовуємо ZIP
  • Вимкаємо зайві події, налаштовуємо відкладену індексацію
  • Реалізуємо батчову інвалідацію кешу та попереднє завантаження XML_ID
  • Розділяємо обмін за типом даних (каталог, ціни, залишки)
  • Документуємо всі налаштування та передаємо інструкції

Терміни оптимізації:

Етап Час
Профілювання та аналіз 4–8 годин
Розбивка на пакети + ZIP 2–4 години
Відкладена індексація + кеш 1 день
Розділення потоків 1–2 дні
Повний аудит та кастомний імпорт 3–5 днів

Оцінимо ваш обсяг і розкажемо точні терміни. Замовте аудит обміну — ми виявимо вузькі місця та запропонуємо план оптимізації. Наші сертифіковані фахівці з Бітрікс гарантують прискорення мінімум у 3 рази.