Оптимизация конфигурации MySQL/MariaDB для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Оптимизация конфигурации MySQL/MariaDB для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1173
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    745
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Оптимизация конфигурации MySQL/MariaDB для 1С-Битрикс

Оптимизация MySQL/MariaDB под нагрузку Битрикс

Дефолтная конфигурация MySQL после установки рассчитана на сервер с 256 МБ RAM. Битрикс на реальном магазине — это тысячи запросов в минуту к b_iblock_element, b_sale_order, b_catalog_price. Без настройки my.cnf сервер работает с буферными пулами в 128 МБ при 16 ГБ доступной памяти, делает дисковые I/O там, где должен читать из кэша, и держит пул соединений на уровне, вызывающем очереди при пиковой нагрузке.

Ключевые параметры конфигурации

InnoDB Buffer Pool — самый важный параметр. Должен вмещать рабочий набор данных целиком. На выделенном сервере БД устанавливаем 70–75% RAM:

innodb_buffer_pool_size = 12G          # для 16GB RAM
innodb_buffer_pool_instances = 8       # 1 на каждый GB, но не более 64
innodb_buffer_pool_chunk_size = 128M

InnoDB Log и flush. Для Битрикс с интенсивными записями (заказы, сессии, агенты):

innodb_log_file_size = 1G
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2     # допустимо для не-финансовых данных
innodb_flush_method = O_DIRECT

innodb_flush_log_at_trx_commit = 2 даёт до 30% прироста производительности при записи ценой потери данных последней секунды при жёстком падении сервера — для большинства e-commerce сайтов это приемлемо.

Соединения и потоки:

max_connections = 300
thread_cache_size = 64
table_open_cache = 4000
table_definition_cache = 2000

Битрикс использует постоянные соединения через PHP-FPM. При 20 воркерах PHP-FPM и пуле в 10 процессов каждый — 200 одновременных соединений с запасом. Ставить max_connections = 1000 без нужды — значит резервировать RAM под неиспользуемые thread stacks.

Временные таблицы. Умный фильтр и поиск Битрикс активно создают временные таблицы:

tmp_table_size = 256M
max_heap_table_size = 256M

Если временная таблица не помещается в память — MySQL пишет её на диск, что замедляет запрос в 10–50 раз. Мониторим через SHOW GLOBAL STATUS LIKE 'Created_tmp_disk_tables'.

Медленные запросы:

slow_query_log = 1
long_query_time = 0.5
log_queries_not_using_indexes = 1
min_examined_row_limit = 1000

Специфика MariaDB

MariaDB 10.4+ имеет ряд параметров, отсутствующих в MySQL:

innodb_adaptive_hash_index_parts = 8
aria_pagecache_buffer_size = 512M      # для MyISAM/Aria таблиц сессий

Битрикс по умолчанию хранит PHP-сессии в файлах, но при использовании сессий в БД или модуля bitrix.session таблицы сессий могут быть MyISAM — учитываем это при настройке.

Что делаем в рамках услуги

Снимаем базовые метрики через mysqltuner.pl и pt-variable-advisor. Анализируем SHOW GLOBAL STATUS за период с нагрузкой: смотрим на Innodb_buffer_pool_reads vs Innodb_buffer_pool_read_requests (hit rate должен быть >99%), Sort_merge_passes, Select_full_join.

Готовим конфигурационный файл под конкретный сервер с обоснованием каждого параметра. Применяем изменения с тестированием на staging, затем поэтапно на prod с мониторингом через Zabbix или Prometheus+mysqld_exporter.

Результат

Корректная конфигурация MySQL под Битрикс снижает среднее время ответа БД на 40–70%, убирает пики latency при конкурентных запросах, снижает дисковый I/O на сервере в 2–5 раз.