Проблема после Перевода таблиц из MyISAM в InnoDB

Добрый день, возможно кто-тосталкивался с такой же проблемой, произвели Перевод таблиц из MyISAM в InnoDB, сайт начал подвисать , настроили вопрос вроде как решили , но не совсем все равно сайт то не работает , то виснет еле работает а иногда просто летает как нужно https://mebelblizko.by/
Так же пытались перейти на redis , но не получилось настроить и откатили обратно, тоже сайт переставал работать
Техподдержка вот что написала

|Таблица cscart_products сканирует 24 432 строки по индексу status этот запрос выполняется одновременно десятками потоков для каждой страницы сайта, и результат нигде не кешируется.
Запрос по сути один и тот же (теги для всего магазина) — его результат не меняется каждую секунду.
Добавили составной индекс который ускорит выборку:
mysql mebelblizko -e “ALTER TABLE cscart_tags ADD INDEX idx_status_company (status, company_id, tag_id);”

Но долгосрочное решение — отключить теги в CS-Cart если они не используются на сайте, или включить кеширование на уровне приложения (Redis/Memcached). Теги на 51К товаров это тяжёлая фича."

и вот ещё

Выдавало вот такие ошибки

Warning: mysqli::__construct(): (HY000/1040): Too many connections in /var/www/dev.mebelblizko.by/app/Tygh/Backend/Database/Mysqli.php on line 48

Warning: session_start(): Failed to read session data: user (path: /var/lib/php/session) in /var/www/dev.mebelblizko.by/app/Tygh/Web/Session.php on line 376

сделали вот что
Добавили в файл /etc/my.cnf

max_connections = 350
max_user_connections = 300
table_open_cache = 4000
table_definition_cache = 2000

Установили параметр
innodb_log_file_size = 2G (был 256м)

Главная проблема — нехватка файловых дескрипторов:
Changed limits: max_open_files: 1024 (requested 8360)
Changed limits: max_connections: 214 (requested 350) ← реально только 214!
Changed limits: table_open_cache: 400 (requested 4000)
Killed nohup /usr/sbin/mysqld …
InnoDB: Database was not shutdown normally!
InnoDB: Starting crash recovery.

Подняли лимиты файловых дескрипторов
echo “mysql soft nofile 65535” >> /etc/security/limits.conf
echo “mysql hard nofile 65535” >> /etc/security/limits.conf
mkdir -p /etc/systemd/system/mysqld.service.d/
cat /etc/systemd/system/mysqld.service.d/limits.conf
[Service]
LimitNOFILE=65535
LimitNPROC=65535

Отключили Query Cache — он при 1.6М записей в cscart_tag_links вызывал глобальные блокировки и вешал весь сайт, старый конфиг:
cp /etc/my.cnf /etc/my.cnf.back

Подскажите пожалуйста как быть?

Добрый день.
Параметры сервера?
Вес базы?
Количество товаров?
cs-cart версия?
PHP ?
https://mebelblizko.by/sitemap.xml - не работает у Вас.
При переводе MyISAM в InnoDB я индексы не трогал.


574 гб всего сайта или что-то конкретное нужно ?
51 тыс товаров , но раньше и товаров и тегов было так же много и все работало, после переноса начались проблемы
CS-Cartv4.17.2.SP3

PHP Version 7.4.33

не работает у Вас- разбираюсь

У Вас осталось копия базы осталось?
База данных у Вас на MYSQL, её размер спрашивал?

Параметры для mysql нужно настроить по 16GB.

то виснет еле работает а иногда просто летает как нужно

Так же пытались перейти на redis , но не получилось настроить и откатили обратно, тоже сайт переставал работать

У вас проблема не в нехватке файловых дескрипторов, а в переполнении оперативной памяти происходит, и скорее всего swap стоит 0. Из-за этого файловые дескрипторы не создаются и вы видите ошибку.

После этого вы увеличиваете параметр innodb_log_file_size и ещё сильнее усугубляете ошибку.

Понаблюдайте в таких случаях за оперативной памятью и если это подтвердиться, то быстрое решение увеличить ram до 16gb и понаблюдать.

Лучше для таких манипуляций как например перевод таблиц из MyISAM в InnoDB делать на тестовом сервере. После тестирования выгружать на основной. Так же сервисы неплохо все сервисы поднимать через докер.