База данных грузит CPU в 100%. В чем может быть дело?
Салют всем, уже месяц мучаюсь с БД (MariaDb). Сразу скажу, слабо разбираюсь в этом вопросе, но честно пытался решить сам, единственный раз тут уже задавал такой вопрос давно и ответа всё равно не нашел. В общем, есть активный проект, уже (усилили машину недавно) стоит на VDS Intel Xeon E5 (cores 4 vCPU), 8 гб ОЗУ.
Версия сервера: 5.5.56-MariaDB. И вся начинка ставилась хостом, мы туда не лазили, просто поставили свой проект на хост.
Поначалу, всё было в порядке, однако сейчас проект разросся и база данных пользователей увеличилась.
На данный момент ситуация такая, что если 30 пользователей к примеру пытаются активировать промокод, то CPU взлетает до 100%, сайт просто не открывается. Если смотреть в монитор PMA, то при заходе 1 человека на сайт(обычом заходе, без действий) CPU поднимается на 2-3%.. А в графе вопросы появляется "пика" и количество вопросов становится 400+, а если никакой активности на сайте нет, то вопросы все равно в графике имеются, в количестве ~100-150 и CPU меньше 10% не падает никогда.
Сейчас я в вопросе намного глубже разобрался и залез в переменные состояния базы, после чего пытался настроить конфиг базы исходя из того, что там "страдало", естественно конфиг может быть кривой, однако увеличив размер кэша таблиц я заметил сильный прирост, но графа о том, что открытых таблиц все равно очень много не стала от этого меньше, чем больше времени проходит, тем больше этих таблиц открывается.
Скриншоты:1) Скриншот нынешнего состояния переменных БД (со старта mysql на скриншоте прошло 2 суток):
https://c.radikal.ru/c06/1809/95/ecfa64208b00.png2) Скриншот монитора в момент, когда нагрузки на сайт практически нет (максимум 2 человека зашло в этот период):
https://c.radikal.ru/c35/1809/61/c9fe8d40c7bb.png3) Скриншот ресурсов машины, слева - вчерашний вечер:
https://b.radikal.ru/b04/1809/9d/f8b670efe8b3.png4) И наконец скрин моего конфига бд, который я абы как с американских ресурсов собирал и пытался что-то менять ещё сам, смотря на результат:
https://d.radikal.ru/d34/1809/0f/e6fb88b9e000.png и вот
https://b.radikal.ru/b11/1809/70/757a3244f2d5.png остальное стоит по умолчанию.
Запросы уже оптимизировал насколько умею, перечитал про индексы и прочее, я вижу, что индексы есть и вижу, что БД оооочень много сканирует таблицы, но тут либо я не понимаю где и как правильно ставить индексы, либо иная причина, тяжелые таблицы оптимизировал с помощью Optimise и всё равно происходит та же картина.
Ещё важный момент, если заходить в PMA и пытаться там шастать, то периодически (раньше было очень часто, а с расширением хостинга стало только когда сервер под нагрузкой), можно словить бесконечную загрузку, страница не загрузится пока ты не обновишь её. Это происходит при входе в таблицу, либо при выходе на главный экран PMA, либо при заходе в поиск, не важно, просто кидает в мертвую загрузку.
На машине также стоит проксирование (защита от ддос), но оно не действует естественно на локальные запросы. Заранее всем
огромное спасибо! Я надеюсь, что меня простят за моё незнание того, как всё работает, но я столкнулся с такой проблемой и нужно срочно её решать, поэтому я вынужден учиться и спрашивать. Спасибо!