MySQL sobrecarregando a CPU em 100% +

1

Meu site parece estar recebendo mais de 1 milhão de visitas hoje, geralmente cerca de 20.000 e, para mim, parece quase não responder. Eu fiz algumas investigações e otimizei o Apache, consertei um bug com sessões PHP, mas agora o problema que eu tenho é que o MySQL está tipicamente usando 100% + CPU.

O servidor tem 32 GB de RAM, com cerca de 50% livre, sem swap, CPU de 3,3 Ghz, 4 núcleos, 4 threads.

Eu desliguei as conexões pré-existentes do MySQL no PHP.

Quando eu executo SHOW PROCESSES (); há apenas 8 na melhor das hipóteses e nenhum está atrasando.

A maioria das minhas tabelas são MyISAM. Tabelas que são InnoDB não são muito usadas.

Conteúdo do my.cnf:

expire_logs_days        = 10
max_binlog_size         = 100M

innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4G

[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

[isamchk]
key_buffer              = 16M

!includedir /etc/mysql/conf.d/

Alguém tem alguma sugestão de comandos para executar? Definindo para mudar? O que pode ajudar.

Ou talvez o servidor não consiga lidar com esse tráfego. Embora estivesse bem em 600.000 visitas / dia.

UPDATE

De acordo com este artigo:

link

Entrei no painel de status do phpMyAdmin e comecei a jogar com alguns dos valores destacados em vermelho. Isso pareceu ajudar um pouco. No entanto, no meu caso, acho que há pouco que eu possa fazer, pois o servidor estava processando cerca de 500 consultas por segundo. Então, vou procurar transformar meu cache html em.

A ativação do cache de consultas do MySQL com cache de 100MB também fez uma grande diferença. O site ainda é lento, mas funciona em cada carga, às vezes rapidamente, às vezes lentamente.

A solução final foi armazenar em cache todo o site, barrar algumas páginas que exigem dinamismo.

    
por Kohjah Breese 12.11.2015 / 23:26

0 respostas