Recentemente, a CPU do meu servidor está subindo muito.
A carga da CPU calcula a média de 13,91 (1 min) 11,72 (5 minutos) 8,01 (15 minutos) e meu site teve apenas um pequeno aumento no tráfego.
Depois de executar um comando superior, vi o MySQL usando 160% da CPU!
Recentemente, otimizei as tabelas e mudei para conexões persistentes. Isso pode estar fazendo com que o MySQL use grandes quantidades de CPU?
Respostas:
Primeiro, eu diria que você provavelmente deseja desativar as conexões persistentes, pois elas quase sempre causam mais danos do que benefícios.
Em segundo lugar, eu diria que você deseja verificar seus usuários do MySQL, apenas para garantir que não seja possível que alguém esteja se conectando a partir de um servidor remoto. Isso também é importante para verificar a segurança.
Em terceiro lugar, eu diria que você deseja ativar o Slow Query Log do MySQL para ficar de olho em todas as consultas que estão demorando muito tempo e usar isso para garantir que você não tenha nenhuma consulta bloqueando as tabelas de chaves por muito tempo.
Algumas outras coisas que você pode verificar seriam executar a seguinte consulta enquanto a carga da CPU estiver alta:
Isso mostrará todas as consultas que estão em execução no momento ou na fila para execução, qual é a consulta e o que está fazendo (esse comando truncará a consulta se for muito longa, você pode usar SHOW FULL PROCESSLIST para ver o texto completo da consulta) .
Você também vai querer manter um olho em coisas como o tamanho do buffer, cache de tabela , cache de consultas e innodb_buffer_pool_size (se você estiver usando InnoDB tabelas) como todas estas atribuições de memória pode ter um efeito sobre o desempenho da consulta que pode causar MySQL para consome CPU.
Você provavelmente também desejará ler as seguintes, pois elas contêm algumas informações boas.
Também é uma boa ideia usar um criador de perfil. Algo que você pode ativar quando quiser, que mostrará quais consultas seu aplicativo está executando, se houver consultas duplicadas, quanto tempo estão demorando etc. etc. Um exemplo de algo assim é sobre o qual estou trabalhando chamado PHP Profiler, mas existem muitos por aí. Se você estiver usando um software como Drupal, Joomla ou Wordpress, poderá perguntar pela comunidade, pois provavelmente existem módulos disponíveis para eles, que permitem que você obtenha essas informações sem precisar integrar nada manualmente.
fonte
Como este é o post principal, se você pesquisar no MySQL por alto uso ou uso de CPU, adicionarei uma resposta adicional:
Em 1 de julho de 2012, um segundo de salto foi adicionado à hora UTC atual para compensar a lenta rotação da Terra devido às marés. Ao executar o ntp (ou ntpd), este segundo foi adicionado ao relógio do seu computador / servidor. O MySQLd não parece gostar desse segundo extra em alguns sistemas operacionais e gera uma alta carga de CPU. A solução rápida é (como root):
fonte
date
" && serviço NTP iniciar o uso da CPU MySQL instantaneamente caiu de 50 - 100% para 0 - 1%sudo service ntpd stop
nesta configuração.Se este servidor estiver visível para o mundo exterior, vale a pena verificar se há muitos pedidos para conectar-se a partir do mundo externo (ou seja, pessoas tentando invadir)
fonte