У меня возникли проблемы с моим сервером MYSQL, установленным с помощью Cpanel. Мой сервер показывает 100% использование mysql, даже если у меня не слишком много трафика в Интернете.
Я использую CentOS 6.5x64 с твердотельным накопителем 80 ГБ и оперативной памятью 8 ГБ с ядром 4CPU.
my.cnf:
[mysqld]
max_connections=500
key_buffer=128M
myisam_sort_buffer_size=35M
join_buffer_size=1M
read_buffer_size=1M
sort_buffer_size=2M
table_cache=4000
thread_cache_size=286
interactive_timeout=25
wait_timeout=7000
connect_timeout=10
max_allowed_packet=268435456
max_connect_errors=10
query_cache_limit=2M
query_cache_size=256M
query_cache_type=1
tmp_table_size=16M
innodb_buffer_pool_size=134217728
open_files_limit=10000
[mysqld_safe]
[mysqldump]
quick
max_allowed_packet=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
Вот результат MySQLTuner:
-------- Storage Engine Statistics -------------------------------------------
[--] Status: +ARCHIVE +BLACKHOLE +CSV -FEDERATED +InnoDB +MRG_MYISAM
[--] Data in MyISAM tables: 164M (Tables: 88)
[--] Data in InnoDB tables: 33M (Tables: 239)
[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)
[!!] Total fragmented tables: 129
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 15m 2s (83K q [92.549 qps], 13K conn, TX: 44M, RX: 5M)
[--] Reads / Writes: 61% / 39%
[--] Total buffers: 544.0M global + 4.5M per thread (500 max threads)
[OK] Maximum possible memory usage: 2.7G (34% of installed RAM)
[OK] Slow queries: 0% (0/83K)
[OK] Highest usage of available connections: 23% (116/500)
[OK] Key buffer size / total MyISAM indexes: 128.0M/59.2M
[OK] Key buffer hit rate: 97.9% (24K cached / 527 reads)
[OK] Query cache efficiency: 54.3% (18K cached / 33K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 1% (5 temp sorts / 388 sorts)
[OK] Temporary tables created on disk: 0% (0 on disk / 374 total)
[OK] Thread cache hit rate: 99% (116 created / 13K connections)
[OK] Table cache hit rate: 98% (465 open / 474 opened)
[OK] Open file limit used: 3% (311/10K)
[!!] Table locks acquired immediately: 58%
[OK] InnoDB buffer pool / data size: 128.0M/33.6M
[OK] InnoDB log waits: 0
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
Optimize queries and/or use InnoDB to reduce lock wait
Вот результат моего ТОПа:
top - 12:01:06 up 1 day, 1:02, 1 user, load average: 10.37, 9.22, 8.61
Tasks: 399 total, 1 running, 397 sleeping, 0 stopped, 1 zombie
Cpu(s): 84.1%us, 15.1%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.2%si, 0.7%st
Mem: 8191528k total, 6042780k used, 2148748k free, 242064k buffers
Swap: 0k total, 0k used, 0k free, 4785012k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24515 mysql 20 0 2732m 165m 6264 S 303.8 2.1 42:43.18 mysqld
19471 root 20 0 174m 10m 6148 S 1.0 0.1 0:00.03 php
19523 root 20 0 172m 10m 5864 S 1.0 0.1 0:00.03 php
19533 root 20 0 172m 9m 5804 S 0.7 0.1 0:00.02 php
19535 root 20 0 172m 10m 5864 S 0.7 0.1 0:00.02 php
Что могло быть причиной этой проблемы?
Нужно ли мне вносить изменения в my.cnf, чтобы сервер не зависал?
Или мне нужно купить новый сервер с оперативной памятью 16 ГБ?
Глядя на вашу информацию, мы можем сделать следующие общие рекомендации:
Ваш ЧТЕНИЕ: ЗАПИСЬ соотношение (61: 39) дает подсказку, что типы вашего двигателя должны быть изменены на Innodb
. Перед этим проверьте вывод
SHOW ENGINE INNODB STATUS\G;
SHOW FULL PROCESSLIST;
в часы пик. Скорее всего, вы увидите запросы в LOCK
штат. Блокировки таблиц - одно из больших ограничений MyISAM
. Если у вас есть огромное количество одновременных операций записи и выбора, а производительность запросов должна быть стабильно высокой, Innodb
это единственный выбор из-за лучшего механизма блокировки (row-level
)
Всего фрагментированных таблиц: 129. Бегать OPTIMIZE TABLE
и дефрагментируйте все для лучшей производительности
Загляните в свой slow_query.log , Проверьте Query_time, Lock_time, Rows_sent, Rows_examined. Если вы найдете запросы, в которых соотношение Rows Sent / Rows Examined
установлен высокий, то этот запрос подходит для optimization
. Возможно, некоторые запросы в slow_query.log используют много ресурсов ЦП.
Проверьте статус сервера относительно RAM и доступного дискового пространства: free -m , df -h
. Если у вас есть доступная память, увеличьте innodb_buffer_pool_size
чтобы было больше кеширования.
Всегда полезно настроить эти параметры в конфигурации MySQL
innodb_fast_shutdown=0 innodb_log_buffer_size innodb_log_file_size innodb_flush_method=O_DIRECT query_cache_size=0
ПРЕДОСТЕРЕЖЕНИЕ:
Контрольный список 1: ЦП процессов MySQL, если возможно увеличить ЦП
Контрольный список 2: RAM, если набор данных помещается в RAM.
Контрольный список 3: Параметры, связанные с подключением ABORTED_CONNECTS
, CONNECTIONS
, MAX_USED_CONNECTIONS
, OPEN_FILES
, OPEN_TABLES
, OPENED_FILES
, OPENED_TABLES
, QUERIES
, SLOW_QUERIES
, THREADS_CONNECTED
, THREADS_CREATED
, THREADS_RUNNING
, PERFORMANCE_SCHEMA
, QUERY_CACHE_SIZE
, WAIT_TIMEOUT
, LONG_QUERY_TIME
, INTERACTIVE_TIMEOUT
, CONNECT_TIMEOUT
, MAX_CONNECTIONS
, LOCK_WAIT_TIMEOUT
, TX_ISOLATION
, MAX_ALLOWED_PACKET
, GENERAL_LOG
, TABLE_OPEN_CACHE
, SLOW_QUERY_LOG
, OPEN_FILES_LIMIT
, INNODB_LOCK_WAIT_TIMEOUT
Контрольный список 4: Параметры, связанные с памятью key_buffer_size
, query_cache_size
, innodb_buffer_pool_size,innodb_log_buffer_size
, max_connections
, read_buffer_size
, read_rnd_buffer_size
, sort_buffer_size
, join_buffer_size
, binlog_cache_size
, thread_stack
, tmp_table_size
Контрольный список 5: Другие важные параметры InnoDB innodb_log_file_size, innodb_file_per_table, innodb_flush_log_at_trx_commit, innodb_flush_method, innodb_fast_shutdown
Контрольный список 6: mysqltuner
Соединения выполняются без индексов: Частота попаданий в кеш таблицы:
-------- MyISAM Metrics --------------------------------------------
[!!]
[!!] Write Key buffer hit rate:
-------- InnoDB Metrics --------------------------------------------
[!!] InnoDB buffer pool / data size:
[!!] Ratio InnoDB log file size / InnoDB Buffer pool size :
[!!] InnoDB buffer pool instances:
Контрольный список 7: Список процессов Запросы, представленные ниже, долгое время находятся в состоянии «Отправка данных».
Контрольный список 8: Журнал медленных запросов - соотношение Rows_examined и Rows_sent очень высокое,
Контрольный список 9: повторяющиеся указатели (если есть)
Контрольный список 10: объясните план нескольких медленных запросов
Контрольный список 11. Проверьте, правильно ли проиндексированы столбцы с предложением where (неиндексированные запросы)
Контрольный список 12. Проверьте блокировку таблицы, блокировку метаданных, взаимоблокировку, если таковая имеется.
Контрольный список 13: любое задание по обслуживанию выполняется с интервалами (например, mysqlcheck, mysqldump и т. Д.)
Контрольный список 14: Аппаратные ресурсы, медленные диски, восстановление RAID, дисковый ввод-вывод, насыщенная сеть, пропускная способность сети относительно пропускной способности при увеличении количества потоков.