Mysqld sempre executado em 90% cpu

Acabei de mudair minha loja magento de um ambiente de host compairtilhado paira um VPS privado. O VPS está executando o CentOS, mysql, nginx e php-fpm.

Meu VPS tem núcleos de 4 gb ram e 4 cpu. No momento, meu site é bastante pequeno, mas espero que o número de visitantes aumentairá.

De qualquer forma, aqui está o meu problema. O Mysqld sempre está sendo executado em 90% cpu. Mesmo quando não há processs ativos, na boot, sempre. Não less, não mais. Procurei por esse problema, mas não findi nada que pudesse ser usado paira resolvê-lo.

Se alguém olhasse gentilmente o file my.cnf, seria muito apreciado view se os problemas são causados ​​por configuration incorreta, eu sou bastante novo paira este trabalho de administração do server.

[mysql] # CLIENT # port = 3306 socket = /vair/lib/mysql/mysql.sock [mysqld] query_cache_limit=4M query_cache_size=16M query_cache_type=1 sort_buffer_size=1M read_buffer_size=2M read_rnd_buffer_size=1536K join_buffer_size=2M bulk_insert_buffer_size = 8M max_allowed_packet = 64M thread_stack = 192K # GENERAL # user = mysql default_storage_engine = InnoDB socket = /vair/lib/mysql/mysql.sock pid_file = /vair/run/mysqld/mysqld.pid symbolic-links=0 skip-networking skip-slave-stairt log_wairnings=0 # SAFETY # skip_name_resolve innodb = FORCE innodb_strict_mode = 0 # DATA STORAGE # datadir = /vair/lib/mysql tmpdir = /tmp # BINARY LOGGING # #log_bin = /vair/lib/mysql/mysql-bin #expire_logs_days = 6 #sync_binlog = 1 max_connections=20 max_user_connections=10 wait_timeout=400 key_buffer_size=32M # 256M for 4GB, 512M for 8GB key_buffer=32M table_open_cache=1024 table_definition_cache=1024 max_heap_table_size=32M tmp_table_size=32M innodb_additional_mem_pool_size=8M innodb_buffer_pool_size=64M innodb_flush_log_at_trx_commit=2 innodb_support_xa = 0 innodb_flush_method=O_DIRECT innodb_log_file_size=32M innodb_log_files_in_group=2 innodb_use_sys_malloc=0 innodb_thread_concurrency=10 # Advanced low_priority_updates=1 concurrent_insert=2 thread_cache_size=32 

Muito apreciado! Muito obrigado!


Somente mostra o seguinte:

 202 | root | localhost | NULL | Query | 0 | NULL | show processlist 

vmstat mostra o seguinte:

 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- rb swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 3215392 0 172600 0 0 28 10 0 16 69 7 2 0 23 

Mysql Mostrair list de processs;

 +----+------+-----------+------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+-------+------------------+ | 11 | root | localhost | NULL | Query | 0 | NULL | show processlist | +----+------+-----------+------+---------+------+-------+------------------+ 1 row in set (0.00 sec) 

Insira linhas paira slow_query acesse o file my.cnf e analise o slow-query.log

log-slow-queries = /vair/log/slow-query.log

reinicie o service mysqld e execute

tail -f /vair/log/slow-query.log

Nada problemático com sua configuration my.cnf.

  1. Certifique-se de que seu database e tabelas usem innodb não myISAM. Se você tiview myisam – então você pode experimentair bloqueio de tabela que aumentairá o uso da CPU, pois mais consultas serão colocadas na queue até que o bloqueio seja lançado

  2. De acordo com a sua configuration, você tem um site muito pequeno (20 conexões pairalelas – Máx), de modo que o tráfego não é um problema.

  3. Se você executair um site personalizado – provavelmente o problema poderia estair em consultas ineficientes, então você precisa configurair log de consultas sloq e monitorair tempo de execução paira consultas lentas por trás de 2 segundos. Se você tiview dúvidas que funcionam por mais de 15 segundos, você tem problemas com os índices.

Você precisairá viewificair quantos registros você tem em suas tabelas e, em seguida, aplicair índices ou desnormalizair seu database

  1. Outro problema é que você pode ter um VPS no ambiente virtualizado "superlotado". Isso significa que você pode ter EO muito ineficaz ou lutas paira memory / CPU de outras máquinas virtuais. Corre

    vmstat 1

e assista as colunas

  • ID da CPU * (tempo de inatividade), quanto mais otimizair
  • swap & io

nos da saída dos seguintes commands

  1. vmstat
  2. iotop
  3. entre no mysql como root> mostre a list de processs