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

Очень высокая загрузка ЦП Использование ОЗУ от низкого до среднего на VPS (mysql более 100% ЦП)

Я нахожусь на сервере VPS Virtuozzo с:
8 ГБ оперативной памяти
6 ЦП
SSD жесткий диск
Debian 8.8
PHP 5.6.30
MySQL 5.5.55

Обслуживается только один веб-сайт.
Это WordPress с SSL-поддержкой веб-сайта с около 22000 статей.
Он получает средний трафик, около 8 тыс. Пользователей, 18 тыс. Просмотров страниц в день.
Из-за особенностей веб-сайта мы получаем много плохих запросов от роботов и попыток взлома. fail2ban настроен и хорошо сообщает.

top -i иногда сообщает CPU% mysql как 200.

Virtuozzo отчеты
Загрузка процессора 99,9%
Средняя загрузка процессора 7,13, 7,42, 6,97
Память 42%

В результате в какой-то момент apache останавливается и перезапускается.

my.cnf:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

#bind-address       = 127.0.0.1

key_buffer          = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size   = 8

myisam-recover         = BACKUP
max_connections        = 100
#table_cache           = 64
#thread_concurrency    = 10

query_cache_limit   = 1M
query_cache_size    = 128M
tmp_table_size      = 256M
max_heap_table_size = 256M
table_open_cache    = 3200

#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1

log_error = /var/log/mysql/error.log

slow_query_log_file = /var/log/mysql/mysql-slow.log
slow_query_log      = 1
#long_query_time = 2
#log_queries_not_using_indexes

#server-id          = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size     = 100M
#binlog_do_db       = include_database_name
#binlog_ignore_db   = include_database_name

innodb_buffer_pool_size = 5G

[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer      = 16M

!includedir /etc/mysql/conf.d/

Журнал медленных запросов не сообщает о медленных запросах.

(файл my.cnf настроен специалистом по администрированию сервера, которого я нанял, потому что я не один из них)

Неправильно настроен MySQL?

ОБНОВЛЕНИЕ: я попытался отключить все плагины и применил базовую тему. Нет конкретного плагина, вызывающего это. Само собой разумеется, что загрузка процессора была ниже, но и нагрузка на оперативную память тоже была меньше. Кстати, если нет плагинов и у нас применена базовая тема, то вовлечение пользователей не будет таким большим. Мы не можем достичь 200 пользователей в минуту с базовой настройкой, чтобы правильно отлаживать ...

Как вы сказали, вы используете word-press, проверьте наличие плохих плагинов, так как некоторые плагины могут быть скомпрометированы, протестируйте его, отключая плагины один за другим

Я могу видеть innodb_buffer_pool_size = 5 ГБ тем не менее, ваше использование памяти составляет 42% от использования 8 ГБ должно быть больше, чем, перезапустили ли вы службу mysql после изменения настройки my.cnf, вызывая эффект изменения только после перезапуска, в основном для innodb_buffer

проверить время ожидания ресурсов с помощью верхней команды проверить для ва если есть какое-то значение, это означает, что есть проблема с такими ресурсами, как hdd или ram, возможно, ваш ssd или ram имеет проблемы с медленным чтением-записью

дополнительно вы можете использовать Мастер настройки Percona чтобы настроить my.cnf в соответствии с конфигурацией вашего сервера