mysql сильно грузит процессор

Всем добрый день! Прошу помощи, совета, подсказки в моей проблеме. Имеем выделенный сервер 2х Xeon E5-2670, 64Gb RAM, 240Gb SSD. На сервере расположен единственный проект среднего уровня. В проекте присутствует база данных из 3 таблиц. Загруженность MySQL: root@d:/var/log/mysql# mysqladmin status Uptime: 5562 Threads: 132 Questions: 581856 Slow queries: 0 Opens: 359 Flush tables: 1 Open tables: 322 Queries per second avg: 104.612 К таблицам выполняется достаточно большое количество запросов SELECT, UPDATE, INSERT. Первая таблица — SELECT и UPDATE запросы, редко INSERT. Таблица InnoDB, примерно 12000 записей. Вторая таблица основная, «рабочая», в ней постоянно присутствует ~500 000 записей. INSERT, UPDATE, SELECT присутствует в полном объеме, в час пик порядка 300-400 запросов в секунду именно к этой таблице. MyISAM. Третья таблица MyISAM, самая «тяжелая» — порядка 150 миллионов записей. Запросы к ней не частые, это INSERT (по 500-1000 строк) и SELECT (полнотекстовый). Ключи на месте, запросы выполняются быстро. Расставлены ключи на основные поля, запросы выполняются достаточно быстро, slow-запросы в логах отсутствуют. На сервере сайт расположен всего неделю, но уже сейчас в часы активности наблюдаются серьезные «провалы» в работе сайта. MySQL сильно грузит процессор, в htop’е периодически появляется При этом Load average в пределах нормы и в целом сервер работает стабильно. Ищу причины происходящего. Что делал: -расставлял дополнительные ключи, сейчас практически все поля по которым -выполняются запросы являются ключами. — ковырялся в конфигурации mysql. Признаюсь честно, не эксперт в этом вопросе — поэтому ничего конкретного тут не сделано и пользы от этого не замечено Подозреваю — нужно что то менять в конфиге mysql Возможно — переводить рабочую таблицу в InnoDB. В интернете попадаются похожие проблемы, но решения найти не удалось.. Прошу помощи, друзья, в решении моей проблемы.
Отслеживать
задан 17 сен 2018 в 8:05
Сергей Белов Сергей Белов
127 1 1 серебряный знак 11 11 бронзовых знаков
последий раз когда я видел подобную проблему оказалось, что были скрипты, которые постоянно перечитывали мелкими запросами одно и то же, множество раз в секунду. Вылечилось исправлением ошибки в тех скриптах. Выявлялось с помощью show full porocesslist на глазок, с целью найти наиболее частые запросы, которые попадаются в выполняемом состоянии.
17 сен 2018 в 8:30
«сейчас практически все поля по которым -выполняются запросы являются ключами» — наличие ключей во первых серьезно замедляет вставку, во вторых часто портит планы выполнения, MySQL при наличии не правильного ключа может пойти по нему, что будет значительно медленнее, чем если бы он решил идти по другому. Фактически после принятия решения о создании нового ключа надо перепроверять все старые запросы, которые хоть каким то боком могут захотеть его использовать
17 сен 2018 в 8:31
Примерно такое у меня и происходит — постоянно пересчитываются мелкие count(*) и т.д., этого не избежать — пользователи просматривают статистику постоянно обновляющуюся.
17 сен 2018 в 20:14
Основное дополнение! На сайте постоянно запускаются «долгоиграющие» скрипты, выполнение которых может занимать от 10 минут до часа и более.. Каждый скрипт в начале открывает соединение с mysql, и взаимодействует с ней в процессе. Т.е. соединение может быть открытым до часа, при этом действия выполняются раз в 2-3 секунды. Может в этом корень «зла»?
17 сен 2018 в 20:17
нет, это как раз хорошо. открытие соединения то же отнимает время и у открывающего и у MySQL. У нас например вообще используется полный fastcgi, обработчики web-запросов всегда подгружены в памяти и держат соединения с БД постоянно, сутками. И уж с этим точно никаких проблем, только выигрыш. Все мелкие справочники при этом вообще у себя в памяти держат и обновляют только когда те поменялись, о чем узнают из redis. Кстати, мелкие count() я бы то же в redis держал, уже готовые, только надо решить как обновлять
mysql нагружает процессор на 100%
Сервер сильно загружен (100%). Основную нагрузку создает процесс mysql (99.9%). Хостинг советует оптимизировать процесс mysql. Как это делается?
На сайте с 10.10.2008
19 марта 2017, 13:25
Вот как это делается: ищете толкового админа, даете ему бабла и еще на пиво. И радуетесь жизни . )))
Занимаюсь разработкой и продвижением интернет магазинов. Внедряю аналитику и консультирую по seo.
На сайте с 17.09.2012
19 марта 2017, 14:25
tes73:
Сервер сильно загружен (100%). Основную нагрузку создает процесс mysql (99.9%). Хостинг советует оптимизировать процесс mysql. Как это делается?
Включить мониторинг тяжелых запросов, все что больше 1 секунды, то это плохо. Включить мониторинг индексирования запросов, после эти данные передать прогеру, что бы он починил. и т.д. А что за хостинг( шаред, впс, или реальный сервер)?
Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
На сайте с 17.08.2008
19 марта 2017, 14:29
Как это делается?
Сделайте лог для медленных запросов, смотрите какие запросы медленные и по каким причинам. Возможно проще сменить хостинг, и не париться изучением баз данных.
На сайте с 23.05.2004
19 марта 2017, 16:32
Если имеется ввиду, что mysql постоянно без остановки грузит на 100% — то обновлять операционку. Имел такое на ubuntu 12, когда через пол года работы и без каких либо обновлений, mysql стал сжирать весь процессор. Локальные обновление не помогали, помогло только полное обновление системы .
Это просто подпись.
На сайте с 14.05.2010
20 марта 2017, 21:13
что показывает htop? log-slow-queries=1 и вперед.
Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
На сайте с 04.01.2012
21 марта 2017, 08:02
Может быть нагрузка на диск? iowait какой?
NVMe VDS (https://well-web.net/nvme-vps) с поддержкой 24/7 — от 545 руб.! Безлимитный хостинг (https://well-web.net/ssd-hosting) — от 129 руб.! Домен в подарок! Перенос бесплатно! Заказывайте сейчас, и получите скидку 50%! Заходи! (https://well-web.net/limited-offers)
На сайте с 21.07.2010
21 марта 2017, 17:23
пробуйте рекомендации mysqltuner
аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) . всегда проверяйте данные людей, которые сами пишут вам в аську или скайп.
На сайте с 15.06.2016
30 марта 2017, 08:21
есть такая утилита для mysql — mytop в ней как в top можно посмотреть запросы онлайн и время выполнения запроса. Это дополнение к логу медленных запросов который нужно включить и посмотреть что в нем. Ну а далее уже нужно изучать сам запрос и базу.
Хостинг RackTech (http://racktech.ru/), аренда VPS / VDS и выделенных серверов, регистрация доменных имен
На сайте с 19.02.2005
30 марта 2017, 22:46
tes73:
Хостинг советует оптимизировать процесс mysql. Как это делается?
1. Создаете индексы для всех запросов которые без индексов 2. Переписываете неиднексируемые запросы в индексируемые
Почему mysql грузит процессор
SHOW ENGINE INNODB STATUS — показывает информацию о текущих транзакциях и блокировках для таблиц типа INNODB, также выводит время выполнения каждого запроса
SHOW WARNINGS — показывает информацию об ошибках, предупреждениях и сообщениях, касающихся последнего запроса
SHOW PROCESSLIST — показывает, какие потоки запущены в настоящий момент, данной командой удобно пользоваться если выполняется большое количество длинных запросов, т.к. будут показаны только первые 100 символов каждого запроса
Если выявлены «зависшие» запросы, то при наличии прав их можно прервать:
— находим в результатах SHOW PROCESSLIST текст «MySQL thread id номер_потока»
— выполняем команду: kill номер_потока
ещё бы подсказали как снизить нагрузку на память mysql установленного с нуля. жрет гиг, два на каждой виртуалке.
Форум русскоязычного сообщества Ubuntu
Страница сгенерирована за 0.028 секунд. Запросов: 25.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.