Назад | Перейти на главную страницу

mysql high cpu на выделенном сервере

у нас есть веб-сайт prestashop, работающий на выделенном сервере с продуктами 10K, у меня низкая производительность, и, глядя на htop, обнаружил, что процессор mysql на 100%.

Выделенный сервер

Процессор: Intel (R) Xeon (R) CPU E3-1230 V2 @ 3,30 ГГц

Оперативная память: 16 ГБ

mysql:

innodb_file_per_table
max_connections=500
max_user_connections=300
wait_timeout=100
interactive-timeout=100
table_open_cache=1024
thread_cache_size=64
join_buffer=16M
sort_buffer=32M
table_open_cache=5000
key_buffer_size=512M
innodb_buffer_pool_size=2GB
sort_buffer_size=8M
read_buffer_size=8M
read_rnd_buffer_size=8M
myisam_sort_buffer_size=128M
max_allowed_packet=32M
net_retry_count=512
thread_cache=8
thread_concurrency=32
server_id=1
collation_server=utf8_unicode_ci
character_set_server=utf8
tmp_table_size=128M
max_heap_table_size=128M
query_cache_limit=256K
query_cache_size=100MB
query_cache_type=1
concurrent_insert=2
low_priority_updates=1
open_files_limit=50000
default-storage-engine=MyISAM
slow_query_log

[mysqldump]
quick
max_allowed_packet=16M

Что нужно настроить / изменить для повышения производительности? Спасибо

Очень сложно сказать, какие настройки вам следует изменить, а какие - на какие. Похоже, вы используете настройки конфигурации по умолчанию, которые, вероятно, не идеальны для вашего сервера.

Хорошее место для начала ваших исследований - это MySQLTuner, популярный скрипт, который вы можете запустить, он просматривает вашу текущую конфигурацию и вносит предложения по улучшению.

https://github.com/major/MySQLTuner-perl

Еще один полезный инструмент - журнал медленных запросов. Вы можете увидеть, какие запросы выполняются долго, они могут быть плохо написаны.

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

Пожалуйста, проверьте, каков текущий процесс mysql, иногда служба mysql потребляет много ресурсов, когда у вас возникает ошибка в приложениях, подключенных к серверам mysql.

Следующие ниже предложения требуют вашего исследования, прежде чем реализовывать ТОЛЬКО один пункт в день. Некоторые могут применяться динамически. Ниже приведены предлагаемые значения cfg / ini раздела [mysqld}, их можно изменить, добавить или удалить.

join_buffer=16M   REMOVE, not a valid name
sort_buffer=32M   REMOVE, not a valid name
thread_cache=8   REMOVE, not a valid name
sort_buffer_size=8M  REMOVE to allow default of 2MB to work for you
read_buffer_size=8M  REMOVE to allow default of 128K to work for you
read_rnd_buffer_size=8M  REMOVE to allow default of 256K to work for you

Последние 3 улучшат время отклика пользователя (за счет минимизации накладных расходов на чтение) И значительно уменьшат объем оперативной памяти MySQL. Использование MySQLCalculator.com поможет вам понять, почему и как.

Для подробного анализа, по истечении одного или нескольких полных рабочих дней, отправьте в исходный вопрос следующий текст:

SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS;

для получения дополнительных рекомендаций по настройке, по одной в день, монитор.