Тюнинг my.cnf / MariaDB для интернет-магазина до 10 000 товаров (2-4 GB RAM)
Готовый файл my.cnf для MySQL 8.0 и MariaDB 10.11 под каталог 10 000 товаров: расчет innodb_buffer_pool_size, log_file_size, защита от дискового I/O.
Интерактивный генератор под ваши параметры
Параметры подставляются в код в реальном времени
/etc/mysql/mariadb.conf.d/50-server.cnf
# /etc/mysql/mariadb.conf.d/50-server.cnf
; Оптимальный my.cnf для каталога до 10 000 товаров (RAM 4GB)
[mysqld]
user = mysql
pid-file = /run/mysqld/mysqld.pid
socket = /run/mysqld/mysqld.sock
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
# Сеть и подключения
max_connections = 150
max_connect_errors = 1000
wait_timeout = 60
interactive_timeout = 60
connect_timeout = 10
# InnoDB Тюнинг (главный потребитель RAM)
# Выделяем 50-60% доступной оперативной памяти под буферный пул
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 2
innodb_log_file_size = 512M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_file_per_table = 1
innodb_stats_on_metadata = 0
# Буферы потоков (Per-Thread Buffers)
key_buffer_size = 64M
sort_buffer_size = 2M
read_buffer_size = 1M
read_rnd_buffer_size = 2M
join_buffer_size = 2M
# Табличный кэш
table_open_cache = 4000
table_definition_cache = 2000
open_files_limit = 65535
# Временные таблицы в памяти
tmp_table_size = 64M
max_heap_table_size = 64M
# Логирование медленных запросов (>1.5 сек)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 1.5
log_queries_not_using_indexes = 0
Разбор ключевых директив конфигурации
Техническое обоснование директив и их прямое влияние на процессор (CPU), оперативную память (RAM) и дисковый ввод-вывод (NVMe I/O).
| Директива / Блок | Рекомендуемое значение | Зачем нужно и системное влияние (CPU / RAM / I-O) |
|---|---|---|
innodb_buffer_pool_size = 2G |
2 GB (50% RAM) | Загружает всю базу данных товаров и индексов в оперативную память, устраняя чтение с диска при фильтрации каталога. |
innodb_flush_log_at_trx_commit = 2 |
2 (сброс 1 раз/сек) | Ускоряет операции записи (создание заказов, обновление остатков) в 5-10 раз за счет асинхронного сброса транзакционного лога. |
innodb_flush_method = O_DIRECT |
O_DIRECT | Исключает двойное кэширование страниц СУБД в кэше файловой системы ОС Linux, экономя память. |
Рекомендуемые системные требования VDS под этот стек
Расчет минимальной и оптимальной конфигурации виртуального сервера для стабильной работы без сбоев.
Оптимальный сайзинг: 2 vCPU, 4 GB RAM, 50 GB NVMe
Расчетная нагрузка: Каталог 10 000 SKU, до 3 000 сессий/день
Timeweb Cloud
2 CPU / 4 GB NVMe
Процессор:
2 vCPU
Память RAM:
4 GB RAM
Накопитель:
50 GB NVMe
Selectel
2 vCPU / 4 GB RAM
Процессор:
2 vCPU
Память RAM:
4 GB RAM
Накопитель:
50 GB NVMe
Beget
Turbo 4 GB
Процессор:
2 vCPU
Память RAM:
4 GB RAM
Накопитель:
50 GB NVMe
Онлайн-утилиты SysKit для проверки этого сервера
Протестируйте корректность применения конфигурации прямо сейчас в один клик.
Частые ошибки при настройке и их решение (FAQ)
Типовые проблемы вебмастеров и сисадминов при внедрении данной конфигурации.
Как проверить процент попадания запросов в InnoDB Buffer Pool?
В консоли MySQL выполните: `SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%';`. Отношение `Reads / Read_requests` должно быть менее 1% (99%+ попаданий в RAM).
Рекомендуемые смежные конфигурации
Дополнительные рецепты и калькуляторы для полной оптимизации данного серверного стека.