Много запросов к таблице cs_cache_handlers и ошибка Cannot connect to the database server

Здравствуйте.

У меня cs-cart Ultimate на котором 16 витрин. Я столкнулся с тем, что несколько раз в день на всех витринах получаю ошибку
Screenshot_1
Код ошибки всегда один и тот же:
Screenshot_2

Несколько дней назад я написал в поддержку хостеру, чтобы они посмотрели в чем проблема и что вызывает нагрузку на мой VPS.

Вот что они ответили:

Согласно кода предоставленной ошибки проблема в коннекте к базе. Дело не в нагрузке на сервере.
Анализируя лог службы сервера бд mariadb вижу, что служба постоянно перезагружается. Это часто возникает по причине достижения лимита по количеству открытых файлов.
Увеличил лимиты и подкорректировал конфигурацию mariadb.

Насколько я вижу, Вы заливаете конфигурацию mariadb с помощью Ansible. Если же Вы часто её обновляете подобным образом - подредактируйте шаблоны, добавьте директивы по увеличению лимита открытых файлов (open_files_limit) и уберите устаревшие (по типу innodb_write_io_threads). Самому демону mariadb (mysqld) я выставил возможность использовать до 50000 файлов. Дополнительно увеличил лимиты по количеству подключений из под одного пользователя.

Я думал, что после этого все будет ок. Но сегодня опять сайты стали недоступны и опять та же ошибка. Я снова быстро написал в поддержку хостеру, чтобы они посмотрели.

Вот что они сегодня ответили:

У Вас на сервере была нагрузка. Когда я зашел на сервер нагрузка уже падала. На данный момент нагрузка в приделах нормы. Сайт доступен.
В момент нагрузки наблюдались следующие запросы к базе данных - http://i.imgur.com/fuAUV2n.png
Большего количества запросов к сайту в этот момент не было.

Скорее всего данная ситуация связана с работой какого либо скрипта Вашего сайта. Судя по тому, к каким таблицам были запросы (таблица cs_cache_handlers), можно предположить, что это были скрипты связанные с кешированием.

На сколько я понимаю, то таблица cache_handlers является таблицей дефолтного кеша cs-cart .
Подскажите, пожалуйста, что можно сделать, чтобы cs cart так не нагружал базу данных? Все магазины из-за этого становятся недоступны…

Что бы вы порекомендовали сделать чтобы избавиться от данной проблемы? Что можно оптимизировать? Заранее благодарен за ответ.

У вас постоянно пересобирается кеш - были ли доработки и есть ли модули сторонние, которые регулярно его сбрасывают? Надо бы написать разработчикам модулей, которые у вас установлены.

Спасибо за ответ. Доработки есть конечно, как же без них… И модули сторонние есть, но как можно вычислить какой именно модуль сбрасывает кеш, если это так… Есть какие-то варианты?

как можно вычислить какой именно модуль сбрасывает кеш

Можно отключать поочередно (или все) модули и смотреть будет ли ошибка. Массово отключать модули можно с помощью кнопок Отключить все модули / Отключить сторонние модули

1 лайк

Спасибо. Но тогда на сайте исчезнет весь функционал, который добавляет модуль…
Может можно как-то в логах увидеть какой модуль сбрасывает кеш или еще каким-то образом?

Вы витрину временно закройте, когда посетителей мало. И выключите сторонние модули. Может дело окажется не в них

Проблема в том, что ошибка проявляется не постоянно, а периодически и при разных действиях… Непонятно когда она может появится снова…

Для начала организуйте переезд на нормальный сервер, хотя бы виртуальный с хорошим админом, тот же захид за 50-150, проблема исчезнет.