|
|
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Проблема такая, после 12 часовой работы MySQL, начала грузить CPU на 100%. Помогает только перезапуск сервиса MySQL и только на несколько минут, потом снова. Настроил методом тыка, больше не смог оптимизировать, из-за нехватки опыта.. Запросов примерно 5-10 в секунду проходит, выполняется запись в таблицу параметра. Прошу поглядеть, подсказать, что подправить) Конфигурация mariaDB (10-я) [client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-external-locking join_buffer_size = 64K key_buffer_size = 1M max_allowed_packet = 1M table_open_cache = 1000 sort_buffer_size = 64K read_buffer_size = 64K read_rnd_buffer_size = 64K query_cache_size = 10M query_cache_limit = 10M net_buffer_length = 2K thread_stack = 64K thread_cache_size = 5 max_connections = 20 max_user_connections = 10 skip-innodb skip-bdb skip-networking default-storage-engine=myisam query-cache-type=0 performance_schema = 0 server-id = 1 [mysqldump] quick max_allowed_packet = 8M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 1M sort_buffer_size = 1M [mysqlhotcopy] interactive-timeout ___ CentOS 6 (x32, 256 мб памяти, XEN, процессор 2000 МГц ) php-FPM mariaDB (10-я) nginx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 19:37:00 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Погодите на MySQL валить. Вы уверены что с веб-сервером все в порядке? Что нет атаки, не пришел краулер или еще какая зараза? BossBoxkey_buffer_size = 1M ... skip-innodbЭто как это? Какой тип таблиц реально используете? Первый ключ делает практически неработоспособным MyISAM, а второй напрочь отключает InnoDB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 19:44:44 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
И что скажет SHOW FULL PROCESSLIST во время нагрузки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 19:47:28 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxCPU на 100%Какие-то запросы при этом выполняются, есть ли "зависшие" или "долгоиграющие" в списке процессов? BossBoxПомогает только перезапуск сервиса MySQLОстановка на некоторое время потока запросов (отключение клиента и т.п.) не помогает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 19:49:25 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
miksoftПогодите на MySQL валить. Вы уверены что с веб-сервером все в порядке? Что нет атаки, не пришел краулер или еще какая зараза? BossBoxkey_buffer_size = 1M ... skip-innodbЭто как это? Какой тип таблиц реально используете? Первый ключ делает практически неработоспособным MyISAM, а второй напрочь отключает InnoDB. С веб-сервером все нормально, nginx работает исправно. Может быть PHP-FPM настроен как то неправильно, т.к. идет запрос на файл PHP и после через него уже к MYSQL. Пробовал во время CPU 100%, перегрузить сервис PHP-FPM, буквально на несколько секунд спадает процессор и снова подымается, помогает только перезапуск MySQL. Я глубоко извиняюсь, я плохо знаком с настройкой MySQL, возможно она выглядит у меня не очень вменяемо ) Использую MyISAM, в mysqltuner.pl показано отключить innoDB я вот отключил, и key_buffer_size тоже показало увеличить. Вот текущий mysqltunner: [!!] Currently running unsupported MySQL version 10.0.17-MariaDB [OK] Operating on 32-bit architecture with less than 2GB RAM -------- Storage Engine Statistics ------------------------------------------- [--] Status: +ARCHIVE +Aria +BLACKHOLE +CSV +FEDERATED -InnoDB +MRG_MyISAM [--] Data in MyISAM tables: 4M (Tables: 37) [--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 52) [OK] Total fragmented tables: 0 -------- Security Recommendations ------------------------------------------- [OK] All database users have passwords assigned -------- Performance Metrics ------------------------------------------------- [--] Up for: 10s (9 q [0.900 qps], 8 conn, TX: 12K, RX: 1K) [--] Reads / Writes: 100% / 0% [--] Total buffers: 27.0M global + 384.0K per thread (20 max threads) [OK] Maximum possible memory usage: 34.5M (14% of installed RAM) [OK] Slow queries: 0% (0/9) [OK] Highest usage of available connections: 5% (1/20) [!!] Key buffer size / total MyISAM indexes: 1.0M/1.1M [!!] Query cache is disabled [OK] Temporary tables created on disk: 0% (0 on disk / 2 total) [OK] Thread cache hit rate: 87% (1 created / 8 connections) [OK] Table cache hit rate: 100% (62 open / 0 opened) [OK] Open file limit used: 1% (24/2K) [OK] Table locks acquired immediately: 100% (72 immediate / 72 locks) [!!] Connections aborted: 25% -------- Recommendations ----------------------------------------------------- General recommendations: MySQL started within last 24 hours - recommendations may be inaccurate Your applications are not closing MySQL connections properly Variables to adjust: key_buffer_size (> 1.1M) query_cache_type (=1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 19:51:58 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
vkleBossBoxCPU на 100%Какие-то запросы при этом выполняются, есть ли "зависшие" или "долгоиграющие" в списке процессов? BossBoxПомогает только перезапуск сервиса MySQLОстановка на некоторое время потока запросов (отключение клиента и т.п.) не помогает? В списке только MySQL висит в самом вверху с пометкой в графе CPU 98-99%, остальные нормально работают, но NGINX соответственно начинает долго отдавать страницы (из-за CPU наверно) Вот сейчас запустил сервер ( картинка ), подожду когда будет CPU 100% выложу скрин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 19:57:42 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Блин, извиняюсь, тут нельзя что ли редактировать сообщения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 20:05:08 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Вот SHOW FULL PROCESSLIST ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 20:07:55 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 20:08:28 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxВот когда нагрузка CPU 100%Со стороны системы не увидите ничего. Смотрите, чем сам мускуль занят - mytop или периодическим вызовом SHOW FULL PROCESSLIST. Если смотреть на картинку, криминального ничего не вижу на ней. Одно ядро выделено на машину? Если это так, и оно загружено чуть более чем наполовину (если верить LA) за последнюю минуту - то беспокоиться тут вообще не о чем. Что по мне, так лучше при возможности выделить машине ресурсов с некоторым запасом. Больше чем сможет откусить, всё равно не съест, зато при решения авральных задач в ступор не впадает сразу. PS: Текстовые сообщения на этом форуме вполне можно размещать в виде текста с форматированием. Не обязательно постить картинки на весь экран. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 20:38:48 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
vkleBossBoxВот когда нагрузка CPU 100%Со стороны системы не увидите ничего. Смотрите, чем сам мускуль занят - mytop или периодическим вызовом SHOW FULL PROCESSLIST. Если смотреть на картинку, криминального ничего не вижу на ней. Одно ядро выделено на машину? Если это так, и оно загружено чуть более чем наполовину (если верить LA) за последнюю минуту - то беспокоиться тут вообще не о чем. Что по мне, так лучше при возможности выделить машине ресурсов с некоторым запасом. Больше чем сможет откусить, всё равно не съест, зато при решения авральных задач в ступор не впадает сразу. PS: Текстовые сообщения на этом форуме вполне можно размещать в виде текста с форматированием. Не обязательно постить картинки на весь экран. Да, 1 ядро. Так как жить то дальше, если MySQL начинает грузить CPU 100%, сервер то страдает от этого, страницы отдает долго и сам тормозит ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 20:40:32 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Установил mytop заметил, что при CPU 100% значение Key Efficiency: 90.1% становится ВЫСОКИМ.( картинка ) Из-за него может быть и как оптимально его выставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 21:06:06 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxДа, 1 ядро. Так как жить то дальше, если MySQL начинает грузить CPU 100%, сервер то страдает от этогоНу оно вполне логично. Ведь кроме мускуля на сервере есть ещё и вебсервер, да и собственные нужды тоже никто не отменял. Всё это эффективно разрулить на одном ядре не очень то получается. То есть, получится, конечно, когда запросы относительно редки. Но когда к вебсерверу приходит запрос странички, а проц в это время дико занят перемалыванием базы данных - разумеется, нагрузка будет расти. Способов выхода из такой ситуации не слишком много. Добавить машине одно или два ядра - это может сильно улучшить ситуацию, но дальнейшее наращивание скорее всего будет практически бесполезным - бутылочное горлышко переместится в другое место. Второй путь - это оптимизация настроек мускуля и оптимизация таблиц и запросов. В первую очередь следует выявить медленные запросы и постараться от них избавиться. Во время выполнения одного долгоиграющего запроса другие (полученные от других запросов к вебсерверу) могут выстраивать очереди. Это как раз создаёт иллюзию тормознутости сервера в целом. BossBoxCPU 100% значение Key Efficiency: 90.1% становится ВЫСОКИМНу это вроде статистики использования буфера индексов в памяти, без обращения к диску. Возможно, при возрастании нагрузки выполняется большое количество однотипных запросов и индексы не вымываются из буфера. Само по себе это значение мало чего говорит (чем больше - тем лучше, 100% - идеал), но будет полезным при хорошем представлении об используемых в запросах таблицах. Во всяком случае, имеющееся key_buffer_size = 1M лично мне кажется слишком низким значением для сколько-то серьёзной работы. Если и при нормальной работе (при низкой нагрузке) значение эффективности остаётся высоким - то есть смысл посмотреть, все ли необходимые индексы установлены. А если снижается - ну тут понятно, пожадничали с памятью и мускуль вынужден заново считывать индексы с диска, что совершенно не улучшает производительность системы в целом. До 100% эффективность может и не догоните, но уж 95 надо бы получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 21:50:31 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
vkle... У меня в общем сейчас такая ситуация, в БД 27 таблиц, примерно в 40% из них содержится около 1000-10000 записей (строка с 2 значениями, IP и DATA), всего около 100 000 записей в этой БД. Я почитал про индексы, но так и не понял, как ими пользоваться, через php что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 22:14:34 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxЯ почитал про индексы, но так и не понял, как ими пользоваться Если очень коротко, то индексы позволяют обращаться непосредственно в нужное место таблицы (или файла таблицы, если так угодно) без необходимости "прокручивания" всей таблицы в поисках нужных записей. Это одна из основных функций индекса, есть ещё и другие. Когда индекс портится (например, при пропадании ляктричества), то сервер часто после включения продолжает вроде бы нормально работать, но при этом нещадно тупит, попутно инициируя множество ненужного чтения с диска. Вообще то, правильное использование индексов должен был предусмотреть программист, писавший приблуду приложение, которое использует базу данных. Однако, все мы люди, и ошибки/недороаботки не исключены - бывает, что какого-то индекса не хватает для достижения хорошей производительности при выполнении какого-то запроса, а бывает, что лишний индекс сказывается неблагоприятным образом. Потому при проблемах СУБД с индексами приходится сталкиваться практически всегда - и при первоначальном осмотре, и при разного рода восстановлении, и при оптимизации запросов и таблиц... BossBoxвсего около 100 000 записей в этой БДЭто немного. Описываемая БД единственная на сервере, или есть ещё другие, активно или не очень используемые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2015, 23:00:26 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBox[--] Data in MyISAM tables: 4M (Tables: 37) BossBox[!!] Key buffer size / total MyISAM indexes: 1.0M/1.1MБаза крохотная совсем. key_buffer_size достаточно будет 2-4 Мб. Далее по мере роста базы или создания новых индексов будет достаточно, если он будет превышать "total MyISAM indexes" на 10-20%. И покажите результат SHOW CREATE TABLE upd_wotspeak_ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 07:26:36 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Я конечно понимаю, что ждать что кто то решит мою проблему и напишет готовый вариант, глупо. Но зачем я написал тогда на форум, в итоге ни решения ничего, одна теория не нужная.. Ее почитать и в сети, я читал. Команда: SHOW CREATE TABLE MariaDB [NotificationBox]> SHOW CREATE TABLE upd_wotspeak_ru; +-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | upd_wotspeak_ru | CREATE TABLE `upd_wotspeak_ru` ( `id` int(11) NOT NULL AUTO_INCREMENT, `data` varchar(50) NOT NULL, `host` varchar(50) NOT NULL, `type` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=24773 DEFAULT CHARSET=latin1 | +-----------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 09:09:18 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxЯ конечно понимаю, что ждать что кто то решит мою проблему и напишет готовый вариант, глупо. Но зачем я написал тогда на форум, в итоге ни решения ничего, одна теория не нужная.. Ее почитать и в сети, я читал. Простите, а что конкретно Вы ожидали от форума? Предложение увеличить размер буфера ключей - было. Сделали? Понаблюдали за результатом? Что изменилось? Предложение показать грузящие запросы - было. Не показали. Предлагаете гадать на кофейной гуще, что там выполняется? Структура таблицы есть. Это хорошо. Запросов, которые на ней выполняются - не видно. Сложно сказать, достаточно ли для нормальной работы единственного индекса на поле `id` или нужны какие-то ещё. Наверняка, нужны. Какие именно - надо смотреть по запросам. Показывайте их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 09:27:47 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxНо зачем я написал тогда на форум, в итоге ни решения ничего, одна теория не нужная..Спокойствие, только спокойствие. Про то, что нужно увеличить key_buffer_size вам уже написали. Теперь создайте индекс по полю host в таблице upd_wotspeak_ru. UPDATE, который был показан выше, должен начать работать заметно быстрее. А если в поле `host` всегда хранятся только ip-адреса, то имеет смысл сменить тип поля на unsigned int, тогда сократится и размер таблицы, и размер индекса. И поиск станет еще немного быстрее. Правда, тогда придется и запросы править, которые с этой таблицей работают. Если включите sloq query log, то сможете наловить еще запросов, которые можно оптимизировать. И мой вопрос насчет роста интенсивности внешних запросов вы пропустили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 09:33:46 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
vkleЗапросов, которые на ней выполняются - не видно.На скриншоте я таки один разглядел :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 09:34:35 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, что не всю информацию предоставил. Я сейчас установил, phpMyAdmin там вроде есть советы по оптимизации после как сервер проработает какое то время и переустановлю MariaDB, в течении 2-3 дней подыму тему, как сервер проработает и если повторится нагрузка на CPU 100%. miksoftТеперь создайте индекс по полю host в таблице upd_wotspeak_ru. UPDATE, который был показан выше, должен начать работать заметно быстрее. А если в поле `host` всегда хранятся только ip-адреса, то имеет смысл сменить тип поля на unsigned int, тогда сократится и размер таблицы, и размер индекса. И поиск станет еще немного быстрее. Правда, тогда придется и запросы править, которые с этой таблицей работают.Извиняюсь, я не знаю как это сделать. miksoftИ мой вопрос насчет роста интенсивности внешних запросов вы пропустили.Не увидел, какой вопрос был? [quot vkle]Предложение увеличить размер буфера ключей - было. Сделали? Понаблюдали за результатом? Что изменилось?/quot] Сервер был выключен, сейчас включил, после отдыха CPU на 100% не сразу подымается, через некоторое время как проработает. vkleПредложение показать грузящие запросы - было. Не показали. Извиняюсь, я не знаю как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 10:18:48 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
Файл настроек для MySQL я накидал бегло (просто занизил все значения), если может кто помочь, накидайте пожалуйста какие параметры лучше прописать (хотя бы основные) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 10:26:05 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
miksoftТеперь создайте индекс по полю host в таблице upd_wotspeak_ru. UPDATE, который был показан выше, должен начать работать заметно быстрее. А если в поле `host` всегда хранятся только ip-адреса, то имеет смысл сменить тип поля на unsigned int, тогда сократится и размер таблицы, и размер индекса. И поиск станет еще немного быстрее. Правда, тогда придется и запросы править, которые с этой таблицей работают. Расскажите пожалуйста это поподробнее!!! Я нулевой уровень, в этих настройках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 10:29:54 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBoxmiksoftТеперь создайте индекс по полю host в таблице upd_wotspeak_ru.Извиняюсь, я не знаю как это сделать.Либо кнопконажимательно в phpMyAdmin (деталей не подскажу), либо командой CREATE INDEX idx_host ON upd_wotspeak_ru (host) BossBoxmiksoftИ мой вопрос насчет роста интенсивности внешних запросов вы пропустили.Не увидел, какой вопрос был?miksoftЧто нет атаки, не пришел краулер или еще какая зараза?Это к тому, что если выросло количество внешних запросов, то неудивительно, что сервер перегружен, а MySQL просто оказался узким местом. Возможно, есть смысл ввести какой-то контроль или ограничения на уровне файерволла или веб-сервера. Например, мне пришлось запретить в файерволле ip-адреса некоторых ботов, которые имеют наглость присылать десятки http-запросов в секунду. А иногда адреса вашего сервера публикуют на популярном сайте и количество посещений резко возрастает. Т.е. такого рода случаи тоже нельзя упускать из рассмотрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 10:32:27 |
|
||
|
Непонятная нагрузка на CPU 100% после запуска MYSQL
|
|||
|---|---|---|---|
|
#18+
BossBox, Но поскольку мы в подфоруме по MySQL, то предлагаю им и заняться. Выполните рекомендации, данные выше, и включите Slow query log. Думаю, там наберутся еще запросы, которые нужно оптимизировать. Показывайте их здесь в текстовом виде в тэге SRC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2015, 10:36:41 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=139&tid=1833274]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
107ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 361ms |

| 0 / 0 |
